查看原文
其他

Spring Framework 6 中的新功能和增强功能一览

SpringForAll 2023-02-09
关注我,回复关键字“spring”
免费领取Spring学习资料

Spring 6 是一个重要的版本,距离 Spring 5 发布有四年多了。通过本文的介绍,我们一起来快速了解 Spring 6发行版中的那些令人兴奋的特性。

JDK 17+ 和 Jakarta EE 9+ 基线

  • 现在基于Java 17 源代码级别的整个框架代码库。

  • Servlet、JPA 等从 javax 迁移到 Jakarta 命名空间。

  • 运行时与 Jakarta EE 9 以及 Jakarta EE 10 API 的兼容性。

  • 与最新的Web服务器兼容:Tomcat 10.1、Jetty 11、Undertow 2。

  • 早期兼容虚拟线程(从 JDK 19 开始预览)。

一般核心修订

  • 升级到 ASM 9.4 和 Kotlin 1.7。

  • 完整的 CGLIB fork,支持捕获 CGLIB 生成的类。

  • 全面的向 AOT(Ahead-Of-Time Processing,提前处理)转型。

  • 对 GraalVM 原生映像的一流支持。

核心容器

  • 默认情况下,无需 java.beans.Introspector 来确定基本 bean 属性。

  • 在 GenericApplicationContext (refreshForAotProcessing) 中的支持 AOT 处理。

  • 基于预解析构造函数和工厂方法的 Bean 定义转换。

  • 支持 AOP 代理和配置类的早期代理类确定。

  • PathMatchingResourcePatternResolver 使用 NIO 和模块路径 API 进行扫描,分别支持 GraalVM 本机映像和 Java 模块路径中的类路径扫描。

  • DefaultFormattingConversionService 支持基于 ISO 的默认 java.time 类型解析。

数据访问和事务

  • 支持预定 JPA 托管类型(用于包含在 AOT 处理中)。

  • JPA 支持 Hibernate ORM 6.1(保持与 Hibernate ORM 5.6 的兼容性)。

  • 升级到 R2DBC 1.0(包括 R2DBC 事务定义)。

  • 删除 JCA CCI 支持。

Spring 消息传递

  • 基于 @RSocketExchange 服务接口的 RSocket 接口客户端。

  • 基于 Netty 5 Alpha 的 Reactor Netty 2 的早期支持。

  • 支持 Jakarta WebSocket 2.1 及其标准 WebSocket 协议升级机制。

通用 Web 修订

  • 基于 @HttpExchange 服务接口的HTTP接口客户端。

  • 支持 RFC 7807 问题详细信息.

  • 统一 HTTP 状态码处理。

  • 支持 Jackson 2.14。

  • 与 Servlet 6.0 对齐(同时保留与 Servlet 5.0 的运行时兼容性)。

Spring MVC

  • 默认情况下使用的 PathPatternParser(能够选择进入 PathMatcher)。

  • 删除过时的 Tiles 和 FreeMarker JSP 支持。

Spring WebFlux

  • 新的 PartEvent API 用于流式传输多部分表单上传(两者都在客户端和服务器)。

  • 新的 ResponseEntityExceptionHandler 用于自定义 WebFlux 异常并呈现 RFC 7807 错误响应。

  • 非流媒体类型的 Flux 返回值(写入前不再收集到 List)。

  • 基于 Netty 5 Alpha 的 Reactor Netty 2 的早期支持。

  • JDK HttpClient 与 WebClient 集成。

可观察性

  • Micrometer Observation 直接可观察性在 Spring 框架中的部分应用。spring-web 模块现在需要 io.micrometer:micrometer-observation:1.10+ 作为编译依赖项。

  • RestTemplate 和 WebClient 被检测为生成 HTTP 客户端请求观察。

  • Spring MVC 可以使用新的 org.springframework.web.filter.ServerHttpObservationFilter 检测 HTTP 服务器观察。

  • Spring WebFlux 可以使用新的 org.springframework.web.filter.reactive.ServerHttpObservationFilter 检测 HTTP 服务器观察。

  • 对于 Flux 和 Mono 的 Micrometer Context Propagation 集成,从控制器方法返回值。

测试

  • 支持在 JVM 上或 GraalVM 本机映像中测试 AOT 处理的应用程序上下文。

  • 集成 HtmlUnit 2.64 + 请求参数处理。

  • Servlet 模拟(MockHttpServletRequestMockHttpSession)现在基于 Servlet API 6.0。

参考引用

  • https://spring.io/blog/2022/11/16/spring-framework-6-0-goes-ga

  • https://github.com/waylau/spring-5-book

感谢阅读,希望对你有所帮助 :) 

来源:waylau.com/new-features-and-enhancements-in-spring-framework-6



END



Zabbix 和 Prometheus 到底怎么选?
UUID 正在被 NanoID 取代?
Spring Boot 开发环境热部署方案
Spring Boot 三步完成日志脱敏

关注后端面试那些事,回复【2022面经】

获取最新大厂Java面经

最后重要提示:高质量的技术交流群,限时免费开放,今年抱团最重要。想进群的,关注SpringForAll社区,回复关键词:加群,拉你进群。

点击这里领取2022大厂面经

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存