Spring 框架概述
spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。
Spring 框架是一个分层架构,由 7 个定义良好的模块组成。Spring 模块构建在核心容器之上,核心容器定义了创建、配置和管理 bean 的方式,如图 1 所示。
图 1. Spring 框架的 7 个模块
组成 Spring 框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现。每个模块的功能如下:
核心容器:
核心容器提供 Spring 框架的基本功能。核心容器的主要组件是 BeanFactory,它是工厂模式的实现。BeanFactory 使用控制反转 (IOC) 模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。
Spring 上下文:
Spring 上下文是一个配置文件,向 Spring 框架提供上下文信息。Spring 上下文包括企业服务,例如 JNDI、EJB、电子邮件、国际化、校验和调度功能。
Spring AOP:
通过配置管理特性,Spring AOP 模块直接将面向方面的编程功能集成到了 Spring 框架中。所以,可以很容易地使 Spring 框架管理的任何对象支持 AOP。Spring AOP 模块为基于 Spring 的应用程序中的对象提供了事务管理服务。通过使用 Spring AOP,不用依赖 EJB 组件,就可以将声明性事务管理集成到应用程序中。
Spring DAO:
JDBC DAO 抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。异常层次结构简化了错误处理,并且极大地降低了需要编写的异常代码数量(例如打开和关闭连接)。Spring DAO 的面向 JDBC 的异常遵从通用的 DAO 异常层次结构。
Spring ORM:
Spring 框架插入了若干个 ORM 框架,从而提供了 ORM 的对象关系工具,其中包括 JDO、Hibernate 和 iBatis SQL Map。所有这些都遵从 Spring 的通用事务和 DAO 异常层次结构。
Spring Web 模块:
Web 上下文模块建立在应用程序上下文模块之上,为基于 Web 的应用程序提供了上下文。所以,Spring 框架支持与 Jakarta Struts 的集成。Web 模块还简化了处理多部分请求以及将请求参数绑定到域对象的工作。
Spring MVC 框架:
MVC 框架是一个全功能的构建 Web 应用程序的 MVC 实现。通过策略接口,MVC 框架变成为高度可配置的,MVC 容纳了大量视图技术,其中包括 JSP、Velocity、Tiles、iText 和 POI。
Spring 特性
1.非侵入式:
对于写代码从来不考虑复用和移植的程序员来说,这一点根本就没有吸引力,那么请跳过。所谓非侵入式是指Spring框架的API不会在业务逻辑上出现,也就是说我们的业务逻辑应该是纯净的,不能出现与业务逻辑无关的代码。首先针对应用而言,这样我们才能将业务逻辑从当前应用中剥离出来,从而在其他的应用中实现复用;其次针对框架而言,由于业务逻辑中没有Spring的API,所以业务逻辑也可以从Spring框架快速的移植到其他框架。
2.容器:
Spring提供容器功能,容器可以管理对象的生命周期,对象与对象之间的依赖关系。你可以写一个配置文件(通常是xml文件),在上面定义对象的名字,是否是单例,以及设置与其他对象的依赖关系。那么在容器启动之后,这些对象就被实例化好了,你直接去用就好了,而且依赖关系也建立好了。
3.IOC:
控制反转,谓之“依赖关系的转移”,如果以前都是依赖于实现,那么现在反转为依赖于抽象吧,其实它的核心思想就是要面向接口编程,至于何谓接口何谓抽象,以及它们的好处,多看看设计模式吧,这里就不费口舌了。
4 依赖注入:
建立对象与对象之间依赖关系的实现,包括接口注入、构造注入、set注入,在Spring中只支持后两种
5 AOP:
面向方面编程,我们可以把日志、安全、事务管理等服务(或功能)理解成一个“方面”,那么以前这些服务一直是直接写在业务逻辑的代码当中的,这有两点不好;首先业务逻辑不纯净,其次这些服务被很多业务逻辑反复使用,完全可以剥离出来做到复用。那么AOP就是这些问题的解决方案,我们可以把这些服务剥离出来形成一个“方面”,以期做到复用;然后将“方面”动态的插入到业务逻辑中让业务逻辑能够享受到此“方面”的服务