Spring是一个开源的控制反转(Inversion of Control ,IoC)和面向切面(AOP)的
容器框架.它的主要目得是简化企业开发.
IOC(Inversion ofControl): 所谓控制反转就是应用本身不负责依赖对象的创建及维
护,依赖对象的创建及维护是由外部容器负责的。这样
控制权就由应用转移到了外部容器,控制权的转移就是
所谓反转
DI(DependencyInjection): 所谓依赖注入就是指:在运行期,由外部容器动态地将依
赖对象注入到组件中。
AOP:面向方面的编程,即 AOP,是一种编程技术,它允许程序员对横切关注点或横切典型的
职责分界线的行为(例如日志和事务管理)进行模块化。AOP的核心构造是方面,它将
那些影响多个类的行为封装到可重用的模块中。AOP和 IOC 是补充性的技术,它们都
运用模块化方式解决企业应用程序开发中的复杂问题。在典型的面向对象开发方式中,可
能要将日志记录语句放在所有方法和 Java类中才能实现日志功能。在 AOP方式中,可
以反过来将日志服务模块化,并以声明的方式将它们应用到需要日志的组件上。当然,优
势就是 Java类不需要知道日志服务的存在,也不需要考虑相关的代码。所以,用 Spring
AOP编写的应用程序代码是松散耦合的。
AOP 的功能完全集成到了 Spring 事务管理、日志和其他各种特性的上下文中。
Spring 优点:
1.降低组件之间的耦合度,实现软件各层之间的解耦。
2.可以使用容器提供的众多服务,如:事务管理服务、消息服务等等。当我们使用容器管理
事务时,开发人员就不再需要手工控制事务.也不需处理复杂的事务传播。
3.容器提供单例模式支持,开发人员不再需要自己编写实现代码。
4.容器提供了AOP技术,利用它很容易实现如权限拦截、运行期监控等功能。
5.容器提供的众多辅作类,使用这些类能够加快应用的开发,如: JdbcTemplate
HibernateTemplate。
6.Spring对于主流的应用框架提供了集成支持,如:集成Hibernate、JPA、Struts等
这样更便于应用的开发。
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 的核心要点是:支持不绑定到特定 J2EE服务的可重用业务和数据访问对象。毫无疑问
这样的对象可以在不同 J2EE环境(Web或 EJB)、独立应用程序、测试环境之间重用。
Spring框架的主要功能
•基于JavaBeans的配置管理,采用IOC的原理,特别是对依赖注射技术的使用。这些都用来
减少各组件间对实施细则的相互依赖性。
•一个核心的,全局适用的bean工厂
•一个一般抽象化的层面来管理数据库间的数据处理
•建立在框架内的,对Java数据处理API和单独的JDBC数据源的一般性策略。因此,在数据处
理支持上对Java企业版本环境的依赖性得以消除
•和一些可持续性的框架,如Hibernate,JDO,iBATIS和db4o,的整合
• web应用中的MVC框架,基于核心的Spring功能,支持多种产生视图的技术,包括JSP
,FreeMarker,Velocity,Tiles,iText,和POI
•大量的AOP框架以提供诸如数据处理管理的服务。同IOC的功能一样,目的是提高系统的模块化程度