框架的简单了解—day01
框架的简单介绍
框架:在开发过程中,把一些具体的内容进行抽取,然后分层会更加的清晰,简单。框架的本质还是java代码,我们在正常的使用过程中,通过自己的业务需求,去写具体的java代码,使用的设计模式等,它会调用底层框架,来完成具体的操作
框架有通用框架,专门框架(公司内部封装的,只会在自己的公司内部使用,大公司为了安全考虑),我们在使用时基本都使用一些通用的。
常用的框架:
持久层的框架:mybatis,mybatis-plus,hiberenate,jdbctemplete,springdata jpa等
控制层的框架:struts2,springmvc,boot
视图层的框架:layui,bootstrap,easyiu,freemarker,themmf等
通用框架:
spring(用来管理整个项目中,控制层,持久层,它们需要bean的时候,都交给spring给我们创建)
springmvc(进行项目中的控制层的操作)
springboot(springmvc的整合,更加简单)
hibernate,mybatis(进行数据库的操作)
shiro(项目中的安全管理,权限管理)
springcloud(项目架构)
druid(数据库的连接池)
log4j(日志管理)
现在在市场上简单的框架以及服务器的相关内容
WEB服务器:Weblogic、Tomcat、WebSphere、JBoss、Jetty
核心框架:Spring Framework
分布式服务框架 Dubbo
安全框架:Apache Shiro
视图框架:Spring MVC
服务端验证:Hibernate + Validator
布局框架:SiteMesh
工作流引擎:Activiti
任务调度:Spring Task + Quartz
持久层框架: MyBatis + MyBatis-Plus
数据库连接池:Alibaba Druid
缓存框架:Ehcache 、Redis
日志管理:SLF4J 、Log4j
会话管理:Spring-Session
工具类:Apache Commons、Jackson 、Xstream、Dozer 、POI
消息队列: ActiveMQ
云存储:阿里云 OSS 腾讯云 COS 七牛云
版本管理: git(推荐) svn
常用的框架组合
1.ssh—spring+struts2+hibernate(比较老的框架组合,现在很少使用它来完成操作,学习成本高,存在漏洞)
2.ssm—spring+springmvc+mybatis(当前都使用的一个框架组合,简单方便,安全)
3.springboot+mybatis(jpa或hibrenate),都想要使用的
4.高层的框架,软件架构层的框架(springcloud—微服务结构;dubbo(阿里出的进行微服务的架构);springcloud alibaba(它是由于原先的不更新了,阿里给了微服务架构))。微服务的实现都使用springboot来实现
Spring框架(最常用的框架)
1.它主要解决项目中对bean的管理,其实就是对对象的创建
2.进行切面编程。就是一个横切面,代码走到这个横切面上就会触发事件。
Spring 框架是一个开源的javaee框架,主要完成对bean的生命周期进行管理的一个轻量级的容器(就是它可以创建,销毁bean的整个过程),Spring现在已经非常成熟
3.spring提供了强大的ioc(对bean的管理),aop(面向切面编程)以及符合mav等功能。
4.Spring最简单的方式使用java程序就可以完成bean的创建,以及切面编程,也就是创建java项目就可以使用(1.java项目 2.spring+springmvc+shiro+mybatis做成web项目 3.maven项目
4.gradle项目)
Spring框架的7大模块
1.spring core(spring核心)
核心容器提供Spring框架的基本功能(Spring Core)。核心容器的主要组件是BeanFactory,它是工厂模式的实现BeanFactory使用控制反转(IOC)模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。(当你想在你的项目中使用bean的创建的时候, 就直接使用core这个组件就可以)
2.spring orm(spring的对象关系映射)
Spring ORM:负责框架中对象关系映射,提供相关ORM 接入框架的关系对象管理工具 。Spring 框架插入了若干个ORM框架,从而提供了 ORM 的对象关系工具,其中包括JDO、Hibernate和iBatisSQL Map。所有这些都遵从 Spring 的通用事务和 DAO 异常层次结构。(想使用框架来完成数据库的操作的时候: jpa的操作—orm)
3.spring dao(数据库的操作层)
Spring DAO:JDBCDAO抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。异常层次结构简化了错误处理,并且极大地降低了需要编写的异常代码数量(例如打开和关闭连接)。Spring DAO 的面向 JDBC 的异常遵从通用的 DAO 异常层次结构。(数据库的操作的时候—dao)
4.spring context(spring的上下文)
spring 上下文:Spring 上下文是一个配置文件,向 Spring框架提供上下文信息。Spring 上下文包括企业服务,例如JNDI、EJB、电子邮件、国际化、校验和调度功能。
5.spring web(进行web开发的时候需要这个web)
spring Web 模块:Web 上下文模块建立在应用程序上下文模块之上,为基于 Web 的应用程序提供了上下文。所以,Spring框架支持与 Jakarta Struts 的集成。Web 模块还简化了处理多部分请求以及将请求参数绑定到域对象的工作。
6.spring web mvc(进行控制层的时候使用)
Spring MVC 框架:MVC框架是一个全功能的构建 Web应用程序的 MVC 实现。通过策略接口,MVC框架变成为高度可配置的,MVC 容纳了大量视图技术,其中包括 JSP*、Velocity**、Tiles、iText* 和 POI。
7.spring aop(spring的面向切面编程)
Spring AOP:通过配置管理特性,Spring AOP 模块直接将面向切面的编程功能集成到了 Spring 框架中。所以,可以很容易地使 Spring 框架管理的任何对象支持AOP。Spring AOP 模块为基于 Spring 的应用程序中的对象提供了事务管理服务。通过使用 Spring AOP,不用依赖 EJB 组件,就可以将声明性事务管理集成到应用程序中。
Spring的特点
轻量
轻量—从大小与开销两方面而言Spring都是轻量的。完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布(他占用的空间比较小)。并且Spring所需的处理开销(就是使用内存处理比较小)也是微不足道的。此外,Spring是非侵入式的:典型地,Spring应用中的对象不依赖于Spring的特定类。(启动,以及运行的时候他都占用空间比较的小)
控制反转(IOC)
ioc-控制反转——Spring通过一种称作控制反转(IOC)的技术促进了低耦合。这个控制反转的意思是,我们对bean的控制权发生了变化,在以前bean的创建的时候是由程序员自己来创建对用的这个bean, 现在使用spring之后,控制权发生反转,不再是程序员创建bean,而是spring容器进行创建。(控制权从程序员的手里转换到spring容器中)
依赖注入(di)
依赖注入—就是由spring给我们注入我们需要的bean。
例子:在生活中,要找一个对象,你自己到处溜达;自己要通过自己的方式去找对的对象。 现在要找对象的时候,可以把这个事情外包(外包给婚介公司(网络上的婚恋网站),也就是把要求告诉你的婚介所,或者网络上写好你的要求, 这个时候你就不需要找,这个事情就控制权反转给你的婚介所,婚恋网站),他会帮你去给你找到需要的这个对象。spring其实就充当的是这个婚介所;(只要给他发去要创建bean的要求,spring就会帮我们创建这个bean;) 他会根据我们的需求进行创建对象;然后把这个注入你的调用者。
Ioc和di都是对bean的管理;
面向切面(aop)
面向切面(aop)—Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务(transaction)管理)进行内聚性的开发。应用对象只实现它们应该做的——完成业务逻辑——仅此而已。它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。
面向切面编程—aop 就是说我们在编写程序的时候,我们可以把我们的程序中的的功能—就是具体的业务 进行执行,但是在执行的过程中,设置切面(平面),当你要进行哪个业务的时候,就触发我们的切面里边的程序,就可以完成我们除了主流业务之外的其他操作。(写日志操作)
例子:我们去银行,主流的业务(存钱,取钱,转账,办卡,以及我们的查询操作;) 他们属于我们的主流业务。当你去银行,你走到这个银行门口,门一下开了,并且银行这个监控器对你进行监控, 当你进入到银行里边的时候,一直都被监控着。我们这个切面主要进行监控操作,他不会影响你的主流的业务。
我们的主流业务上经常会有我们的切面: 当你的业务走到这个切面上就会触发相关事件。