Spring 是最受欢迎的企业级 Java 应用程序开发框架,可用来创建性能好、易于测试、可重用的代码,用于开发任何 Java 应用程序。Spring框架能够充分利用其它框架的技术并与之融合,为系统实现提供最优解决方案。
Spring分层架构由7个模块组成,模块单独存在,也可以联合实现某种功能。
核心容器提供 Spring 框架的基本功能。核心容器的主要组件是 BeanFactory,它是工厂模式的实现。BeanFactory 使用控制反转 (IOC) 模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。
Spring 上下文是一个配置文件,向 Spring 框架提供上下文信息。Spring 上下文包括企业服务,例如 JNDI、EJB、电子邮件、国际化、校验和调度功能。
通过配置管理特性,Spring AOP 模块直接将面向方面的编程功能集成到了 Spring 框架中。所以,可以很容易地使 Spring 框架管理的任何对象支持 AOP。Spring AOP 模块为基于 Spring 的应用程序中的对象提供了事务管理服务。通过使用 Spring AOP,不用依赖 EJB 组件,就可以将声明性事务管理集成到应用程序中。
JDBC DAO 抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。异常层次结构简化了错误处理,并且极大地降低了需要编写的异常代码数量(例如打开和关闭连接)。Spring DAO 的面向 JDBC 的异常遵从通用的 DAO 异常层次结构。
Spring 框架插入了若干个 ORM 框架,从而提供了 ORM 的对象关系工具,其中包括 JDO、Hibernate 和 iBatis SQL Map。所有这些都遵从 Spring 的通用事务和 DAO 异常层次结构。
Web 上下文模块建立在应用程序上下文模块之上,为基于 Web 的应用程序提供了上下文。所以,Spring 框架支持与 Jakarta Struts 的集成。Web 模块还简化了处理多部分请求以及将请求参数绑定到域对象的工作。
7、Spring MVC 框架:MVC 框架是一个全功能的构建 Web 应用程序的 MVC 实现。通过策略接口,MVC 框架变成为高度可配置的,MVC 容纳了大量视图技术,其中包括 JSP、Velocity、Tiles、iText 和 POI。
Spring的核心组件包括两部分:IOC(控制反转)、AOP(面向切面编程)。
控制反转,把创建对象的权力和交给Spring容器,由容器来管理。避免多处使用某对象的时候A a = new A()的方式,太慢。
控制包含:对象的创建、属性复制、依赖关系、生命周期的管理
反转:把创建对象的权力和交给Spring容器,由容器来管理
原理:使用ApplicationContext,在启动的时候把所有的对象以“类名,对象”的方式放在一个map里,使用时用applicationContext.getBean(“类名”)的方式获取对象。
面向切面编程,对某一类方法进行增强,使用@Before/@After/@Around注解进行方法前/后/前后的增强,经常用于获取方法执行时长、异常捕获处理等。
连接点:不同的方法都是join point连接点,可以被选择来进行增强
切点:pointCut,对哪里进行增强,这是个标志(选择增强的方法),对一个地方进行切入逻辑称为“通知”:Advice
切面:Aspect,包括pointCut、Advice
IOC是AOP的基石。
1.引入jar包
2.编写web.xml
3.编写application.xml
4.部署tomcat
Spring的作用:解耦,降低对象之间的关系。
缺点:jar包太多,名字根本记不住,xml文件里要写的内容太多,每要容器管理一个对象,都得往xml里插入一行配置。
基于以上缺点,Spring提供优化方案:注解。
类上加@Configuration,方法上加@Bean,意为:
本类是配置类,方法里返回的对象需要放入Spring容器,进行管理。
Spring的难点就在于:包依赖、bean注解。