1 Spring基础
Spring框架核心功能包含依赖注入、事务管理、Web应用、数据访问、消息发送等。
Spring Framework 手册:https://docs.spring.io/spring-framework/docs/
Spring Framework 各个版本重大变化
| 版本 | 特性 |
|---|---|
| Spring Framework 1.0 | 1. 所有代码都在一个项目中 2. 支持核心功能IoC、AOP 3. 内置支持Hibernate、iBatis等第三方框架 4. 对第三方技术简单封装。如:JDBC、Mail、事务等 5. 只支持XML配置方式。 |
| Spring Framework 2.0 | 1. 最重要的变化:支持注解配置 2. 增加对ehcache支持 3. 对JMS(Java消息服务)、JMX(Java管理扩展)等支持 |
| Spring Framework 3.0 | 1. 支持Java类的配置 2. 由原来的一个项目拆分成多个子模块。 3. 添加单元测试子模块 |
| Spring Framework 4.0 | 1. 全面支持Java 8 2. 添加二级子项目 Spring MVC ,基于Servlet 3.0开发 3. 提供WebSocket支持。 4. 引入@RestController等注解,增强对Restful的支持。 |
| Spring Framework 5.0 | 1. 最低环境要求Java 8 2. 日志整合。把原来commons-logging 封装后变为spring-jcl模块 3. 跨域更改。把原来的JSONP支持变更为修改响应头的@CrossOrigin注解。 4. 响应式编程。添加二级子项目WebFlux 5. 使用Kotlin(科特林)进行函数式编程 |
| Spring Framework 6.0 | 1. 最低环境要求Java 17 2. 加强对响应式编程支持。添加子模块spring-r2dbc 3. 取消子模块spring-orm-hibernate4,只保留spring-orm,只支持Hibernate5。 |
Spring 各个版本的特性
01. Spring Framework 1.0 详情见:https://docs.spring.io/spring-framework/docs/1.2.x/reference/
- 基于 AOP 联盟接口的 AOP 拦截框架,与核心容器集成
- JNDI 支持类,可轻松将 Spring 管理的 Bean 与 JNDI 定位的对象连接起来
- 应用上下文概念,提供资源加载和信息访问抽象
- 具有可插拔策略的通用事务管理,支持声明式和编程式分界
- 支持源代码级元数据,将共享属性作为默认实现(例如事务属性)
- 通用 DAO 支持,提供通用数据访问异常层次结构,可与任何数据访问策略配合使用
- 简化资源和错误处理的 JDBC 抽象,还包括 BLOB/CLOB 支持
- 支持 Hibernate,提供会话工厂管理和事务范围的线程本地会话
- 支持 JDO 1.0 和 iBATIS SQL Maps 1.3/2.0 的类,并与 Spring 的事务管理相集成
- 邮件发送器抽象,特别支持 JavaMail,包括方便地处理文件附件
- 为 Quartz 和 Timer 提供调度支持,轻松调用 Spring 管理的 Bean 方法
- 为 RMI、JAX-RPC 和 Caucho's Hessian/Burlap 提供远程支持,以便轻松公开 Spring 管理的 Bean
- 访问和实现 EJB(本地和远程)的方便类
- 网络应用上下文,用于在网络环境中加载 Spring 应用上下文
- 灵活的网络 MVC 框架,基于策略界面构建,并与各种视图技术相结合,Spring MVC 、Struts。
- 只支持XML 配置,不支持注解配置
02. Spring Framework 2.0 详情见:https://docs.spring.io/spring-framework/docs/2.0.0/reference/new-in-2.html
03. Spring Framework 3.0 详情见:https://github.com/spring-projects/spring-framework/wiki/Upgrading-to-Spring-Framework-3.x
04. Spring Framework 4.0 详情见:https://github.com/spring-projects/spring-framework/wiki/Upgrading-to-Spring-Framework-4.x
05. Spring Framework 5.0 详情见:https://github.com/spring-projects/spring-framework/wiki/Spring-Framework-5.0-Release-Notes#new-and-noteworthy
06. Spring Framework 6.0 详情见:https://github.com/spring-projects/spring-framework/wiki/Spring-Framework-6.0-Release-Notes
Spring Framework 包含的模块
Test
模块 功能 spring-test 单元测试框架,支持JUnit、TestNG和Hamcrest Core Container
模块 功能 spring-core 核心容器,提供依赖注入、事务管理、Web应用、数据访问、消息发送等 spring-context 应用上下文,提供资源加载和信息访问抽象 spring-beans 对象管理 spring-expression 表达式语言.可以通过表达式快速获取容器内容 spring-jcl 日志框架 AOP
模块 功能 spring-aop AOP框架,支持声明式和编程式分界 AspectJ Integration
模块 功能 spring-aspects AspectJ集成,支持AOP和事务管理 Instrumentation
模块 功能 spring-instrument Instrumentation框架,支持对JVM的扩展 Messaging
模块 功能 spring-messaging 消息框架,支持JMS和WebSocket Data Access
模块 功能 spring-jdbc JDBC框架,提供通用数据访问异常层次结构,并可与任何数据访问策略配合使用 spring-orm ORM框架,提供Hibernate、iBATIS SQL Maps、JDO 1.0和Spring事务管理 spring-tx 事务管理框架,支持声明式和编程式分界 spring-r2dbc R2DBC框架,提供通用数据访问异常层次结构,并可与任何数据访问策略配合使用 spring-jms JMS框架,提供JMS支持 Web
模块 功能 spring-webmvc MVC框架,提供基于策略的MVC框架,并支持各种视图技术 spring-web Web框架,提供通用的Web支持,包括HTTP请求处理、视图渲染和错误处理 spring-websocket WebSocket框架,提供WebSocket支持 spring-webflux WebFlux框架,提供响应式编程支持