# Spring 6.0新特性都有哪些

Spring 6.x都有哪些新特性呢，我们在本文快速地罗列一下：


## JDK 17+和Jakarta 9+基线
1. 整个框架的代码基于Java 17源码级别。
2. Servlet、JPA等从"javax"迁移到"jakarta"命名空间。
3. 兼容最新一代的web容器：Tomcat 10，Jetty 11.
4. JDK 19的“虚拟线程”的早期兼容。
## 一般核心修订
1. 升级到ASM 9.4和Kotlin 1.7。
2. 完成CGLIB分支，支持捕捉CGLIB生成的类。
3. AOT（Ahead-Of-Time）转换的全面基础。
4. 对GraalVM原生镜像第一级别的支持。
## 核心容器
1. `GenericApplicationContext`(`refreshForAotProcessing`)中对AOT处理的支持。
2. 基于预先解析构造器和工厂方法的bean的定义和转换。
3. 为AOP代理和配置类提供早期代理类确定的支持。
4. `PathMatchingResourcePatternResolver`使用NIO和module path API来扫描。
## 数据访问和事务
1. 支持预先确定 JPA 管理类型（用于包含在 AOT 处理中）。
2. JPA支持Hibernate 6.1（保持Hibernate 5.6）的支持。
3. 升级到R2DBC 1.0（响应式编程的数据库驱动，包含R2DBC事务定义）。
4. 移除JCA CCI的支持。
## Spring消息
1. RSocket接口客户端基于`@RSocketExchange`服务接口。
2. 基于Netty 5 alpha 的Reactor Netty 2的早期支持。
## 一般Web修订
1. HTTP接口客户端基于`@HttpExchange`服务接口。
2. 支持RFC 7807问题[https://docs.spring.io/spring-framework/docs/6.0.0-RC1/reference/html/web.html#mvc-ann-rest-exceptions](https://docs.spring.io/spring-framework/docs/6.0.0-RC1/reference/html/web.html#mvc-ann-rest-exceptions)。
3. 统一的HTTP状态码的处理。
4. 为RestTemplate提供基于Micrometer的观测性支持。
## Spring MVC
1. 默认使用`PathPatternParser`（可以选择`PathMatcher`）
2. 为控制器方法返回的Flux和Mono返回值，提供与Micrometer上下文传播集成。
3. 移除过时的Tiles和FreeMarker JSP的支持。
## Spring WebFlux
1. 使用新的PartEvent API用于form文件上传。
2. 添加`ResponseEntityExceptionHandler`定制WebFlux一场和渲染RFC 7807错误响应。
3. 用于非流的媒体类型的Flux返回值。
4. 基于Netty 5 alpha 的Reactor Netty 2的早期支持。
5. JDK HttpClient与WebClient 集成。
6. 为WebClient提供基于Micrometer的观测性支持。
## 测试
1. 支持测试AOT处理的application context。
2. 与HtmlUnit 2.64请求参数处理集成。

我会陆续更新关于Spring 6.0和Spring Boot 3.0新特性的文章，请保持关注，感谢！

参考资料：
[https://github.com/spring-projects/spring-framework/wiki/What%27s-New-in-Spring-Framework-6.x/](https://github.com/spring-projects/spring-framework/wiki/What%27s-New-in-Spring-Framework-6.x/)
