轩辕李的博客 轩辕李的博客
首页
  • Java
  • Spring
  • 其他语言
  • 工具
  • HTML&CSS
  • JavaScript
  • 分布式
  • 代码质量管理
  • 基础
  • 操作系统
  • 计算机网络
  • 编程范式
  • 安全
  • 中间件
  • 心得
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

轩辕李

勇猛精进,星辰大海
首页
  • Java
  • Spring
  • 其他语言
  • 工具
  • HTML&CSS
  • JavaScript
  • 分布式
  • 代码质量管理
  • 基础
  • 操作系统
  • 计算机网络
  • 编程范式
  • 安全
  • 中间件
  • 心得
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • Java

  • Spring

    • 基础

    • 框架

      • Spring容器初始化过程和Bean生命周期探究
      • Spring容器:从依赖管理到注解配置全解析
      • Spring事件探秘
      • Spring AOP的应用
      • Spring 事务管理
      • Spring中的资源访问:Resource接口
      • Spring中的验证、数据绑定和类型转换
      • Spring表达式语言(SpEL)
      • Spring中的属性占位符
      • Spring数据缓冲区与编解码器详解
      • Spring对于原生镜像和AOT的支持
      • Spring中的集成测试与单元测试
      • Spring与多种技术的集成
      • Spring框架版本新特性
      • Spring Boot

      • 集成

    • 其他语言

    • 工具

    • 后端
    • Spring
    • 框架
    轩辕李
    2024-09-01
    目录

    Spring框架版本新特性

    本文是Spring框架历代版本的核心特性梳理,结合官方文档和权威技术资源,按版本分类呈现关键演进路径。

    # 1.0(2004年3月)

    官网链接:

    • Spring Framework 1.0 Final Released (opens new window)

    主要特性:

    • 依赖注入(DI):最先进的轻量级容器,支持setter和constructor注入方式,通过BeanFactory和ApplicationContext实现组件松耦合配置。
    • 面向切面编程(AOP):基于AOP Alliance接口的拦截框架,与核心容器深度集成,支持声明式事务管理。
    • 数据访问抽象:提供通用DAO支持和数据访问异常层次结构,JdbcTemplate简化JDBC操作,HibernateTemplate简化Hibernate DAO开发。
    • 声明式事务:支持将声明式事务应用于任何POJO,提供JTA或本地事务策略的可插拔事务管理。
    • Web MVC框架:灵活的Web MVC框架,基于策略接口构建,集成多种视图技术。
    • 企业集成:JNDI支持类、应用上下文概念,提供资源加载和消息访问抽象。

    # 2.0(2006年)

    官网链接:

    • New Features in Spring 2.0 (opens new window)

    主要特性:

    • XML命名空间:引入context和aop命名空间,简化配置(如<context:component-scan>)。
    • Spring MVC雏形:支持@Controller和@RequestMapping注解,与Struts竞争。
    • AspectJ整合:支持@Aspect注解,增强AOP灵活性。
    • JPA抽象层:整合Java Persistence API,简化ORM开发。
    • 异步JMS支持:支持消息驱动的POJO处理。

    # 2.5(2007年11月)

    官网链接:

    • Spring Framework 2.5 Released (opens new window)

    主要特性:

    • 组件扫描和自动配置:支持自动检测类路径中的应用组件并将其自动配置为Spring管理对象,引入@Component、@Repository、@Service等注解。
    • 注解驱动配置:引入@Autowired、@Resource和@Qualifier等注解,大幅减少XML配置依赖。
    • Spring MVC注解支持:新的注解驱动控制器模型,支持Servlet和Portlet环境,提供更灵活的Web开发方式。
    • Spring TestContext框架:全新的集成测试框架,提供对JUnit 4和TestNG的一流支持。
    • AspectJ增强:新增bean名称切点元素,内置支持基于LoadTimeWeaver抽象的AspectJ加载时编织。
    • XML配置命名空间:新增context和jms命名空间,提供最大便利性。
    • JDBC改进:扩展SimpleJdbcTemplate功能,包括对命名SQL参数的支持。
    • JCA支持:能够将Spring ApplicationContext部署为JCA RAR文件,支持无头应用模块。

    # 3.0(2009年12月)

    官网链接:

    • New Features in Spring 3.0 (opens new window)

    主要特性:

    • Java 5+支持:基于Java 5构建,全面支持Java 6,兼容J2EE 1.4和Java EE 5,并提供Java EE 6的早期支持。
    • Spring Expression Language(SpEL):全新的表达式语言,支持动态表达式计算(如#{bean.property * 2})。
    • Java配置增强:引入@Configuration和@Bean注解,推动代码优先配置,减少XML依赖。
    • 类型转换系统:新的类型转换系统和字段格式化系统,增强数据绑定能力。
    • 全面REST支持:RestTemplate提供HTTP客户端API,新增REST相关注解,支持服务端和客户端REST功能。
    • Spring MVC增强:新增@PathVariable和@RequestParam等注解,增强MVC配置能力。
    • 声明式模型验证:整合JSR-303 Bean Validation规范,增强数据校验能力。
    • 嵌入式数据库:支持HSQL、H2、Derby等内存数据库,简化测试环境搭建。
    • 对象到XML映射:提供对象到XML的映射功能。
    • 异步方法调用:支持异步方法调用能力。

    # 3.1

    官网链接:

    • New Features in Spring 3.1 (opens new window)

    主要特性:

    • Profile机制:@Profile注解支持多环境配置(如开发、测试、生产)。
    • Servlet 3支持:基于代码的Servlet容器配置,无需web.xml。
    • 环境抽象(Environment):统一管理属性源和配置文件。
    • Hibernate 4整合:适配Hibernate 4的新特性。

    # 3.2(2012年12月)

    官网链接:

    • New Features in Spring 3.2 (opens new window)

    主要特性:

    • Servlet 3异步支持:方法可返回Callable、DeferredResult或AsyncTask进行异步请求处理,支持Servlet 3的AsyncContext。
    • Spring MVC测试框架:提供"一流的Spring MVC应用测试支持",使用流畅API无需Servlet容器即可测试。
    • 内容协商改进:引入ContentNegotiationStrategy和ContentNegotiationManager,提供更灵活的媒体类型解析。
    • 新注解和功能:
      • @ControllerAdvice用于跨控制器异常处理
      • @MatrixVariable用于提取矩阵变量
      • @RequestBody改进,支持验证
    • 其他改进:
      • Jackson JSON 2库支持
      • Tiles 3支持
      • HTTP PATCH方法支持
      • 初步JCache 0.5支持
      • 改进的日期/时间格式化
      • 增强的测试功能
      • 并发优化
      • 基于Gradle的构建系统
      • 精细化Java 7支持

    # 4.0(2013年12月)

    官网链接:

    • What's New in Spring 4.0 (opens new window)

    主要特性:

    • Java 8全面支持:首个全面支持Java 8特性的版本,整合Lambda表达式、Stream API和默认方法。
    • Java SE 6最低要求:最低要求提升至Java SE 6,移除对旧版本Java的支持。
    • Groovy Bean配置:支持使用Groovy DSL定义外部Bean配置,提供更灵活的配置方式。
    • WebSocket支持:新增spring-websocket模块,提供基于WebSocket的双向通信全面支持。
    • @RestController注解:新增@RestController注解,简化RESTful Web服务开发。
    • AsyncRestTemplate:提供非阻塞异步支持的AsyncRestTemplate类。
    • 时区支持:框架范围内的托管时区支持,如在LocaleContext中。
    • 改进的启动体验:增强新用户的入门和初始设置体验。
    • 核心容器改进:增强依赖注入和配置能力。
    • 测试改进:增强测试框架和能力。

    # 4.1

    官网链接:

    • New Features in Spring 4.1 (opens new window)

    主要特性:

    • Spring Messaging模块:新增@MessageMapping和@SendTo注解,支持WebSocket消息驱动开发。
    • JCache(JSR-107)集成:通过@Cacheable、@CacheEvict等注解实现统一的缓存抽象,支持Ehcache 2.5+、Hazelcast等。
    • WebSocket增强: 引入WebSocketHandler和SockJSClient,支持跨浏览器的WebSocket通信。提供WebSocketScope和SockJS客户端统计功能。
    • 静态资源处理优化:新增ResourceResolver和ResourceTransformer,支持路径匹配和资源预处理(如版本号替换)。整合Groovy模板引擎(如GroovyMarkupView)。
    • Java 8支持:引入java.util.Optional类型,支持在@RequestParam和依赖注入中处理可为空的参数。增强SpEL编译器模式,提升表达式执行性能。
    • 测试改进:@Sql注解支持动态脚本参数和事务隔离级别配置。MockMvc新增MockMvcConfigurer全局配置,简化测试用例。

    # 4.2(2015年7月)

    官网链接:

    • New Features in Spring 4.2 (opens new window)

    主要特性:

    • 基于注解的事件:应用事件基础设施现在提供基于注解的模型,引入@EventListener注解,支持通过SpEL过滤事件(如@EventListener(condition = "#event.payload > 10"))。@TransactionalEventListener支持在事务提交后触发事件。
    • @AliasFor注解:Spring Framework 4.2引入对声明和查找注解属性别名的一流支持。
    • HtmlUnit支持:Spring MVC测试框架现在为HtmlUnit提供一流支持。
    • Hibernate 5.0支持:全面支持Hibernate ORM 5.0,作为JPA提供者(自动适配)以及通过其原生API。
    • CORS支持:内置CORS支持,包括全局(MVC Java配置和XML命名空间)和控制器级别配置。
    • HTTP流和服务器发送事件:HTTP流和服务器发送事件(Server-Sent Events)支持。
    • JMS改进:autoStartup属性可通过JmsListenerContainerFactory控制,@JmsListener现在是可重复注解。
    • Java 8默认方法支持:@Bean注解可标注在接口的默认方法上,实现轻量级配置扩展。
    • 配置灵活性提升:@Import支持导入普通类(非@Configuration类),通过ImportBeanDefinitionRegistrar动态注册Bean。

    # 4.3(2016年6月)

    官网链接:

    • What's New in Spring 4.3 (opens new window)

    主要特性:

    • 测试改进:
      • 新增SpringRunner作为SpringJUnit4ClassRunner的别名
      • 测试相关注解现在可以在接口上声明
      • @Transactional测试方法不再要求必须是public
      • Spring TestContext框架中的ApplicationContext缓存现在有界,默认最大容量为32
    • 核心容器改进:构造函数注入的隐式化(当只有一个构造函数时无需@Autowired注解)
    • 组合注解:如@GetMapping、@PostMapping等,简化RESTful Web服务开发
    • 库更新:
      • Hibernate ORM 5.2(仍支持4.2/4.3和5.0/5.1,3.6现已弃用)
      • 嵌入更新的ASM 5.1、CGLIB 3.2.4和Objenesis 2.4
    • JUnit要求:Spring TestContext框架中的JUnit支持现在要求JUnit 4.12或更高版本
    • @Nullable注解:增强代码健壮性,减少空指针异常(部分功能)
    • 生命周期结束:4.3.x于2020年12月31日达到官方EOL(生命周期结束),不再接收更新或安全补丁

    # 5.0(2017年9月)

    官网链接:

    • Spring Framework 5.0 Release Notes (opens new window)

    主要特性:

    • 基线要求更新:要求JDK 8和Java EE 7+ API,完全兼容JDK 9,移除对Portlet、Velocity、JasperReports等旧技术的支持。
    • 响应式编程(Spring WebFlux):引入全新的响应式Web框架Spring WebFlux,支持非阻塞I/O和背压机制。
    • 核心改进:增强JDK 8+支持,包括lambda和泛型,新的Commons Logging桥接器(spring-jcl),空安全API声明。
    • Web创新:新增WebClient进行非阻塞HTTP调用,增强Kotlin支持,改进CORS配置。
    • 函数式编程:RouterFunction和HandlerFunction提供函数式Web编程模型。
    • 测试增强:完全支持JUnit 5,新的测试执行回调,并行测试执行支持。
    • 关键移除:移除已弃用的包和方法,更新最低库版本(如Hibernate 5、Jackson 2.9+)。

    # 5.1(2018年10月)

    官网链接:

    • Spring Framework 5.1 Release Notes (opens new window)

    主要特性:

    • JDK 11 LTS支持:全面兼容JDK 11,在类路径和模块路径上提供无警告体验,性能和兼容性改进。
    • 核心容器增强:支持@Profile条件中的逻辑表达式,优化Kotlin beans DSL,改进bean检索和注入机制。
    • Web框架改进:控制器参数注解现在在接口上检测,更严格的URI变量编码,改进日志以提供更人性化的输出,支持Brotli压缩以及GZip。
    • WebFlux进展:通过Reactor Netty 0.8提供HTTP/2服务器支持,增强日志和会话安全,路由器函数的DSL改进,Protobuf支持等第三方集成。
    • 其他更新:Hibernate ORM 5.3集成,响应式消息支持,增强测试能力,改进性能和减少启动开销。
    • Kotlin 1.3支持:优化Kotlin开发体验,增强DSL功能,预览Coroutines支持。
    • Servlet 4.0支持:适配Servlet 4.0规范,提升Web模块性能。

    # 5.2(2019年9月)

    官网链接:

    • Spring Framework 5.2 Release Notes (opens new window)

    主要特性:

    • 核心改进:升级到ASM 7.1和Kotlin 1.3,新的MergedAnnotations API用于高效注解检索,增强@Configuration模型带有proxyBeanMethods属性。
    • Web增强:新的"WebMvc.fn"函数式编程模型,改进WebFlux支持(包括Kotlin Coroutines),RSocket消息支持,请求映射性能优化。
    • 事务管理:支持响应式事务管理,通过Vavr Try返回类型进行事务控制。
    • 测试改进:JUnit Jupiter 5.5.2支持,新的@TestConstructor注解,支持测试执行事件。
    • Kotlin Coroutines集成:优化异步代码可读性,适配Kotlin协程,提供更自然的异步编程体验。
    • RSocket支持:提供Reactive Streams通信协议,增强微服务间交互能力。
    • 文档改进:代码示例现在提供Java和Kotlin两个版本。
    • 升级注意事项:要求Jackson 2.9.7+,注解检索算法修订,CORS处理显著更新,弃用某些媒体类型和路径扩展匹配。

    # 5.3(2020年10月)

    官网链接:

    • Spring Framework 5.3 Release Notes (opens new window)

    主要特性:

    • 核心改进:升级到Kotlin 1.4和ASM 9.0,增强GraalVM原生支持,改进对Java 14/15记录类的支持,通过spring.spel.ignore选项移除SpEL支持。
    • 数据访问增强:新的spring-r2dbc支持模块,新的JdbcTransactionManager,支持JdbcTemplate上的queryForStream,改进Hibernate和事务管理。
    • Web开发:使用PathPattern提供更高效的URL匹配,CORS配置使用allowedOriginPatterns,改进@ControllerAdvice中的异常处理,WebFlux改进如新的DefaultPartHttpMessageReader。
    • 测试:更好的JUnit Jupiter @Nested测试类支持,改进的WebTestClient能力,增强测试中的事务管理。
    • 消息和WebSocket:改进RSocket支持,更好的STOMP/WebSocket顺序保持,Kotlin多平台序列化支持。
    • JDK 15支持:整合密封类、模式匹配和Text Blocks等新特性。
    • MockMvc增强:统一HTTP测试API,支持Kotlin DSL。
    • 响应式改进:WebFlux支持多部分请求的完全响应式处理。
    • 关键弃用:RxJava 1.x支持,某些远程技术,基于属性的bean定义格式。

    # 6.0(2022年11月)

    官网链接:

    • Spring Framework 6.0 Release Notes (opens new window)

    主要特性:

    • 基线升级:要求Java 17+和Jakarta EE 9+,从javax命名空间迁移到jakarta,兼容最新Web服务器如Tomcat 10.1和Jetty 11。
    • 核心改进:全面支持GraalVM原生镜像,提前(AOT)转换支持,简化bean属性确定,增强对虚拟线程的支持。
    • Web和API增强:新的HTTP接口客户端带有@HttpExchange,支持RFC 7807问题详情,统一HTTP状态码处理,RSocket接口客户端,通过Micrometer进行可观察性检测。
    • 移除/弃用功能:移除RPC风格的远程调用,移除过时的Servlet集成,弃用ListenableFuture,更改尾部斜杠匹配行为。
    • 测试和兼容性:支持测试AOT处理的应用上下文,基于Servlet API 6.0更新Servlet模拟,增强与HtmlUnit的集成。
    • 响应式改进:WebFlux支持多部分表单的流式处理(PartEvent API)。
    • 可观察性主题:整合Micrometer,支持RFC 7807 Problem Details,提供全面的应用监控能力。

    # 6.1(2023年11月)

    官网链接:

    • Spring Framework 6.1 Release Notes (opens new window)

    主要特性:

    • 核心改进:完全兼容虚拟线程和JDK 21,新的虚拟线程任务执行器,Project CRaC的生命周期集成用于JVM检查点恢复,增强对异步/响应式方法和调度的支持,改进可观察性检测。
    • Web和REST增强:控制器参数的内置方法验证,新的具有同步HTTP客户端功能的RestClient,HTTP接口客户端改进,WebFlux中对Kotlin协程的支持。
    • 数据访问更新:新的JdbcClient用于统一查询/更新语句,通过TransactionExecutionListener增强事务管理,改进数据库操作的异常转换。
    • 消息和测试:STOMP消息顺序配置选项,增强的测试功能如@RecordApplicationEvents,改进AOT(提前编译)处理支持。
    • 关键基线升级:SnakeYAML 2.0、Jackson 2.14、Kotlin Coroutines 1.7、Kotlin Serialization 1.5。
    • JDK 21与虚拟线程:全面支持JDK 21 LTS,包括密封类、模式匹配等新特性,优化虚拟线程配置,提供SimpleAsyncTaskExecutor的虚拟线程模式。
    • 可观察性升级:整合Micrometer改进版本,提供更好的HTTP请求监控和异步缓存支持。

    # 6.2(2024年11月)

    官网链接:

    • Spring Framework 6.2 Release Notes (opens new window)

    主要特性:

    • 增强核心容器:修订自动装配算法,支持"回退beans",后台bean初始化,引入@Bean(bootstrap = BACKGROUND)支持异步初始化非关键Bean。
    • 改进开发体验:简化原生应用的反射提示注册,支持属性占位符转义,增强SpEL索引支持。
    • Web和测试改进:MockMvc的AssertJ支持,@ExceptionHandler的内容协商,测试中的动态属性注册,到Lists/Maps/Arrays的构造函数数据绑定,从headers进行数据绑定,片段渲染支持。
    • URL和解析增强:两个新的URL解析器实现,用于尾部斜杠匹配的UrlHandlerFilter。
    • 其他显著变化:升级基线要求,移除弃用的API,改进任务调度元数据,支持分区cookies,增强错误处理机制。
    • 关键技术变化:更严格的泛型类型匹配,修订属性占位符解析,更灵活的SpEL编译,改进反射和索引能力。

    # 总结

    Spring的演进始终围绕简化开发和技术趋势适配展开:

    • 编程范式:从XML到注解,再到响应式和函数式编程。
    • 生态整合:从Java EE到云原生,构建庞大技术生态(Spring Data、Spring Cloud等)。
    • 性能优化:非阻塞I/O、背压机制和容器化支持,应对高并发场景。

    如需详细文档,请访问Spring官方文档 (opens new window)或GitHub版本日志 (opens new window)。

    祝你变得更强!

    编辑 (opens new window)
    上次更新: 2025/08/16
    Spring与多种技术的集成
    开发你的第一个 Spring Boot 应用程序

    ← Spring与多种技术的集成 开发你的第一个 Spring Boot 应用程序→

    最近更新
    01
    AI时代的编程心得
    09-11
    02
    Claude Code与Codex的协同工作
    09-01
    03
    Claude Code实战之供应商切换工具
    08-18
    更多文章>
    Theme by Vdoing | Copyright © 2018-2025 京ICP备2021021832号-2 | MIT License
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式