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

简介: Spring Framework 6 中的新功能和增强功能


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 开始预览)。

基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

一般核心修订

  • 升级到 ASM 9.4 和 Kotlin 1.7。
  • 完整的 CGLIB fork,支持捕获 CGLIB 生成的类。
  • 全面的向 AOT(Ahead-Of-Time Processing,提前处理)转型。
  • 对 GraalVM 原生映像的一流支持。

基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

核心容器

  • 默认情况下,无需 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 模拟(MockHttpServletRequest、MockHttpSession)现在基于 Servlet API 6.0。

参考引用



相关文章
|
23天前
|
资源调度 Java 调度
Spring Cloud Alibaba 集成分布式定时任务调度功能
定时任务在企业应用中至关重要,常用于异步数据处理、自动化运维等场景。在单体应用中,利用Java的`java.util.Timer`或Spring的`@Scheduled`即可轻松实现。然而,进入微服务架构后,任务可能因多节点并发执行而重复。Spring Cloud Alibaba为此发布了Scheduling模块,提供轻量级、高可用的分布式定时任务解决方案,支持防重复执行、分片运行等功能,并可通过`spring-cloud-starter-alibaba-schedulerx`快速集成。用户可选择基于阿里云SchedulerX托管服务或采用本地开源方案(如ShedLock)
|
16天前
|
Java UED 开发者
Spring Boot 降级功能的神秘面纱:Hystrix 与 Resilience4j 究竟藏着怎样的秘密?
【8月更文挑战第29天】在分布式系统中,服务稳定性至关重要。为应对故障,Spring Boot 提供了 Hystrix 和 Resilience4j 两种降级工具。Hystrix 作为 Netflix 的容错框架,通过隔离依赖、控制并发及降级机制增强系统稳定性;Resilience4j 则是一个轻量级库,提供丰富的降级策略。两者均可有效提升系统可靠性,具体选择取决于需求与场景。在面对服务故障时,合理运用这些工具能确保系统基本功能正常运作,优化用户体验。以上简介包括了两个工具的简单示例代码,帮助开发者更好地理解和应用。
39 0
|
10天前
|
NoSQL 前端开发 Java
使用 Spring Boot + Neo4j 实现知识图谱功能开发
在数据驱动的时代,知识图谱作为一种强大的信息组织方式,正逐渐在各个领域展现出其独特的价值。本文将围绕使用Spring Boot结合Neo4j图数据库来实现知识图谱功能开发的技术细节进行分享,帮助读者理解并掌握这一技术栈在实际项目中的应用。
66 4
|
15天前
|
机器学习/深度学习 文字识别 前端开发
基于 Spring Boot 3.3 + OCR 实现图片转文字功能
【8月更文挑战第30天】在当今数字化信息时代,图像中的文字信息越来越重要。无论是文档扫描、名片识别,还是车辆牌照识别,OCR(Optical Character Recognition,光学字符识别)技术都发挥着关键作用。本文将围绕如何使用Spring Boot 3.3结合OCR技术,实现图片转文字的功能,分享工作学习中的技术干货。
40 2
|
15天前
|
安全 Java 应用服务中间件
如何在 Spring Boot 3.3 中实现请求 IP 白名单拦截功能
【8月更文挑战第30天】在构建Web应用时,确保应用的安全性是至关重要的。其中,对访问者的IP地址进行限制是一种常见的安全措施,特别是通过实施IP白名单策略,可以只允许特定的IP地址或IP段访问应用,从而有效防止未授权的访问。在Spring Boot 3.3中,我们可以通过多种方式实现这一功能,下面将详细介绍几种实用的方法。
27 1
|
16天前
|
算法 Java UED
你的Spring Boot应用是否足够健壮?揭秘限流功能的实现秘诀
【8月更文挑战第29天】限流是保障服务稳定性的关键策略,通过限制单位时间内的请求数量防止服务过载。本文基于理论介绍,结合Spring Boot应用实例,展示了使用`@RateLimiter`注解和集成`Resilience4j`库实现限流的方法。无论采用哪种方式,都能有效控制请求速率,增强应用的健壮性和用户体验。通过这些示例,读者可以灵活选择适合自身需求的限流方案。
30 2
|
14天前
|
Java Spring 监控
危机时刻,Spring框架如何拯救你的应用?深入探讨健康检查与自我修复功能
【8月更文挑战第31天】在现代软件架构中,应用的稳定性和可用性至关重要。本文介绍Spring框架中的健康检查与自我修复机制,通过Spring Boot Actuator的`/health`端点监控应用状态,并结合Spring Cloud Hystrix实现服务容错和断路器功能,提高应用健壮性。借助这些工具,开发者能轻松监控应用健康状况并在发现问题时自动采取措施,确保服务高可用性。要实现完善的机制,需根据具体应用架构和需求进行配置和扩展。
34 0
|
设计模式 开发框架 安全
Spring 功能介绍|学习笔记
快速学习 Spring 功能介绍
102 0
|
24天前
|
缓存 Java Maven
Java本地高性能缓存实践问题之SpringBoot中引入Caffeine作为缓存库的问题如何解决
Java本地高性能缓存实践问题之SpringBoot中引入Caffeine作为缓存库的问题如何解决
|
2月前
|
Java 测试技术 数据库
Spring Boot中的项目属性配置
本节课主要讲解了 Spring Boot 中如何在业务代码中读取相关配置,包括单一配置和多个配置项,在微服务中,这种情况非常常见,往往会有很多其他微服务需要调用,所以封装一个配置类来接收这些配置是个很好的处理方式。除此之外,例如数据库相关的连接参数等等,也可以放到一个配置类中,其他遇到类似的场景,都可以这么处理。最后介绍了开发环境和生产环境配置的快速切换方式,省去了项目部署时,诸多配置信息的修改。