spring系列:一、spring 概述
介绍
spring framework 是一个java框架,一个开源框架,一个分层的一站式轻量级框架,2003年兴起。
spring framework 项目是整个spring生态的基础,包含了spring最核心的功能,如:ioc,aop,spring mvc等,其他项目都需要依赖spring framework。
这里使用的版本是spring-framework-4.2.4.RELEASE版本,后面统一使用spring来简单表示spring framework。
作用
spring 使JAVA EE开发更加容易。
spring 的作用贯穿整个表现层、业务层、持久层,是一个真正的一站式框架。
spring 没有选择和现有的解决方案竞争,而是致力于将它们融合在一起。
起源
spring的出现就是为了解决EJB(Enterprise JavaBean)的臃肿、低效、脱离现实的问题。
体系
- core container
- core 和 beans 模块提供了spring最基础的功能,IOC(控制反转)和DI(依赖注入)
- context 模块基于core和beans模块,提供用一种框架风格的方式来访问对象。核心接口是ApplicationContext
- spel(spring expression language),表达式语言模块,提供了在运行期间查询和操作对象图的强大能力。支持访问和修改属性值,方法调用,支持访问和修改数组、容器和索引器,命名变量,支持算数和逻辑运算,支持从spring容器获取bean,支持列表、选择和一般的列表聚合等。
- spring提供了factory模式的经典实现来消除对程序性单例模式的需要,允许你真正地从程序逻辑中分离出依赖关系和配置。
- data access/integration
- jdbc模块提供了对jdbc的抽象,消除了烦琐的jdbc编码和数据库厂商特有的错误代码解析
- orm模块为流行的对象关系映射(Object-Relational Mapping)API提供集成层,包括JPA和Hibernate。使用Spring-orm模块可以将这些O/R映射框架与Spring提供的所有其他功能结合使用,例如声明式事务管理功能。
- oxm模块提供了一个支持对象/XML映射的抽象层实现,例如JAXB、Castor、JiBX和XStream。
- jms模块(Java Messaging Service):指Java消息传递服务,包含用于生产和使用消息的功能。自spring4.1以后,提供了与Spring-messaging模块的集成。
- tx模块(事务模块)支持用于实现特殊接口和所有POJO(普通Java对象)类的编程和声明式事务管理。
- web
- websocket protocol是html5的一种新协议,它实现了浏览器和服务器的全双工通信。spring 支持 websocket 和 socketJS 的通信。
- web 模块提供了基本的web功能。
- servlet模块提供了web应用的mvc实现。
- portlet模块提供了portlet环境下的mvc实现。
- aop
- aop模块提供了一个符合AOP要求的面向切面的编程实现,允许定义方法拦截器和切入点,将代码按照功能进行分离,以便干净地解耦。
- aspects
- spring提供了与AspectJ的集成功能,AspectJ是一个功能强大且成熟的AOP框架。
- instrumentation
- 提供了类植入(Instrumentation)支持和类加载器的实现,可以在特定的应用服务器中使用。
- messaging
- spring4.0以后新增了消息(Spring-messaging)模块,该模块提供了对消息传递体系结构和协议的支持。
- test
- test模块支持使用junit或testNG对spring组件进行单元测试和集成测试。
优点
- 方便解耦,简化开发
spring就是一个大工厂,可以将所有对象创建和依赖的关系维护,交给spring管理。 - AOP编程的支持
spring提供面向切面编程,可以方便的实现对程序进行权限拦截、运行监控等功能。 - 声明式事务的支持
只需要通过配置就可以完成对事务的管理,而无需手动编程。 - 方便程序的测试
spring对Junit4支持,可以通过注解方便的测试Spring程序。 - 方便集成各种优秀框架
spring不排斥各种优秀的开源框架,其内部提供了对各种优秀框架的直接支持。 - 降低JavaEE API的使用难度
spring对JavaEE开发中非常难用的一些API(JDBC、JavaMail、远程调用等),都提供了封装,使这些API应用难度大大降低。