Spring Cloud 2023.0.0(代号 Leyton)RELEASE 版本已发布。你可以在 Maven Central 中找到该版本。 欲了解更多细节,可以查阅 2023.0 发布说明。
2023.0 版本中的显著变化 此版本基于 Spring Boot 3.2.0。
点击 此处 查看 2023.0.0 中的所有 issues。
Spring Cloud Gateway 2023.0 中包含与 Servlet/Spring MVC 兼容的 Spring Gateway Server MVC(issue,初始 PR) Gateway Actuator 发现功能增强 (PR 3147) Spring Cloud Function 现在可以将 REST 应用程部署为 AWS Lambdas 或 Azure Functions 使用 spring-cloud-function-web 将函数(Function)部署为 REST 端点时的 CRUD 映射 Spring Cloud Openfeign 支持 Java HttpClient(#689) Spring Cloud Commons 重新启动时的刷新范围(Refresh Scope) - 为适应 JVM 检查点重启时的环境变化而量身定制的功能(PR 1266) 为新的 RestClient 提供负载均衡支持 (1293) 确定性子集负载均衡算法,用于限制实例数量(1288)。 Spring Cloud Config Config Server 支持 Native image(PR 2361) Spring Cloud Kubernetes 将 fabric8 升级至 6.
该版本增加了大量新功能和改进。有关完整的 升级说明 以及 新的和值得注意 的功能,请参阅 发布说明。
3.2 中的新特性 3.2 版的亮点包括:
支持虚拟线程(Virtual Threads) 初步支持 JVM Checkpoint Restore(Project CRaC) SSL Bundle 重新加载 大量可观测性的改进 支持 RestClient 支持 JdbcClient 支持 Jetty 12 为 Apache Pulsar 提供 Spring 支持 为 Kafka 和 RabbitMQ 提供 SSL Bundle 支持 重新处理了嵌套 Jar 文件的处理方式 改进 Docker Image 构建 依赖升级 Spring Boot 3.2 迁移到了多个 Spring 项目的新版本,还尽可能升级到了其他第三方库的最新稳定版本。详情请参见 发布说明。
其他变化 发行说明 中还记录了许多其他更改和改进。还可以找到计划在未来删除的废弃类和方法列表。
Ref:https://spring.io/blog/2023/11/23/spring-boot-3-2-0-available-now
Spring Framework 6.1 中的新变化 核心容器 总体上 与虚拟线程和 JDK 21 兼容。 虚拟线程的配置选项:专用的 VirtualThreadTaskExecutor 和 SimpleAsyncTaskExecutor 上的虚拟线程模式,以及具有新线程每个任务策略和虚拟线程模式的类似的 SimpleAsyncTaskScheduler。 与 Project CRaC(JVM 检查点恢复)的生命周期集成(请参阅 相关文档)),包括 -Dspring.context.checkpoint=onRefresh 选项。 为 ThreadPoolTaskExecutor 和 ThreadPoolTaskScheduler 以及 SimpleAsyncTaskScheduler 集成了生命周期 暂停/恢复功能 和 并行优雅停机 功能。 可使用 -Dspring.context.exit=onRefresh 选项进行 AppCDS 训练运行,这是主要的用例;请参阅 31595。 可达性元数据贡献改进,为即将到来的 GraalVM 变动做准备:缺失的可达性元数据将很快报告为运行时异常,以获得更好的开发人员体验。参见 31213。 异步/响应式销毁方法(如 R2DBC ConnectionFactory);参见 26691。 异步/响应式 Cacheable 方法,包括缓存接口和 CaffeineCacheManager 中的相应支持;参见 17559 和 17920。 响应式 @Scheduled 方法(包括 Kotlin 正则表达式);参见 22924。 为每个 @Scheduled 方法选择特定目标调度器;见 20818。 用于一次性任务(仅有初始延迟)的 @Scheduled 方法;见 31211。 @Scheduled 方法的可观测性;见 29883。 Spring 不会为 @Async 或 @EventListener 注解的方法生成开箱即用的观测结果,但会帮助你为这些方法的执行传播上下文(例如带有当前 trace id 的 MDC 日志)。请参见新的 ContextPropagatingTaskDecorator、相关参考文档部分 和 issue 31130。 Validator 工厂方法,用于编程式 validator 实现;请参阅 29890。 Validator.
⭐ 新特性 在 JavaVersion 枚举中添加 TWENTY_ONE #37364 🐞 Bug 修复 当 SLF4J 和 Logback 在多线程中并行初始化时,由于 SubstituteLoggerFactory 被认为是一个竞争的 LoggerFactory 实现,启动可能会失败 #37484 使用 metadata-url 时,Saml2RelyingPartyAutoConfiguration 会忽略 sign-request #37482 在 DomainSocket 工具中泄漏文件描述符/套接字 #37460 在 WelcomePageHandlerMapping 中,无效的 Accept 头会产生 HTTP 500 #37457 PrivateKeyParser 不支持 ed448、XDH 和 RSA-PSS 密钥 #37422 使用 Gradle 8.3 并配置 Java 工具链语言版本时,“languageVersion is final and cannot be changed” #37380 当 @ConfigurationProperties 注解的记录有多个构造函数时,AOT 处理失败 #37336 使用 Gradle 和 dependency management 插件时,Spring Boot dependency management 对 ehcache 无效 #37270 SslStoreBundle 实现不是不可变的 #37222 解析因使用大写字母而无效的 OCI image 名称的速度非常慢 #37183 生成和消费不同的跟踪传播格式不起作用 #37178 使用除 secp384r1 之外的椭圆曲线时,使用 https 失败 #37169 在 3.
⭐ 新特性 ArithmeticException:在 @Scheduled(fixedDelay = Long.MAX_VALUE, timeUnit = TimeUnit.MINUTES) 上 long 溢出 #31210 对 RequestResponseBodyMethodProcessor 中的 resolveArgument 方法进行优化 #31175 更新 BeanValidationBeanRegistrationAotProcessor 中 validation exception 的日志级别 #31147 跳过在 PathMatchingResourcePatternResolver 中搜索不存在的目录。#31111 在 Argument[Type]PreparedStatementSetter 的 doSetValue() 中为 argValue 添加 @Nullable #31086 优化 StringUtils 中的 whitespace 检查 #31067 使用 simple JPARepository 时缺少代理提示 #31050 为 ReactiveAdapterRegistry 中的现有 adapter 注册 override #31047 DefaultListableBeanFactory#getBeanNamesForType 在解析 FactoryBean 时未考虑目标类型 #30987 让 spring-core 访问 org.jboss.vfs,以便在 WildFly 上支持 VfsUtils #30973 当 contentLength 可用时,在 StringHttpMessageConverter 中使用 readNBytes #30942 当数组长度不大于 1 时,跳过数组排序 #30934 避免对每个 SseEventBuilder 条目进行刷新 #30912 使用 protected 修饰 DefaultGenerationContext(DefaultGenerationContext, String) 构造函数 #30895 在 Spring MVC 中的 AbstractResourceResolver 子类中添加缺失的 @Nullable 注解 #30893 创建 scope Bean 实例时的性能瓶颈 #30883 对同一 Bean 类中的多个 @Autowired 方法进行确定性的 Bean 初始化 #30359 优化 ClassUtils#getMostSpecificMethod #30272 Hibernate native 查询代理缺少 native 提示 #29603 检查异常原因以支持 @PropertySource(ignoreResourceNotFound) #22276 调整 PayloadMethodArgumentResolver 中的验证元数据处理方式 #21852 🐞 Bug 修复 Spring Boot 启动失败 does not reside in the file system: manifoldclass://622488023/.