新闻

Spring Boot 3.2.3 发布

⚠️ 注意 此版本升级到 Hibernate 6.4.4.Final。虽然它包含了许多有价值的错误修复,但在原生镜像(Native Image)中无法正常工作。如果你正在使用 GraalVM,则应在 pom.xml 中使用 hibernate.version 属性将 Hibernate 暂时降级到 6.4.2.Final。 🐞 Bug 修复 如果路径中包含空格,无法解析嵌套的 JAR URL #39675 当使用较长的镜像名称且标记包含非法字符时,镜像构建会运行很长时间 #39638 Banner 打印不遵守设置的字符集 #39621 “micrometer.observations.” 配置属性应为 “management.observations.” #39600 配置类解析过程中的元数据读取使用默认资源加载器,而不是应用的资源加载器 #39598 当将一些 Gson 属性(包括 spring.gson.disable-html-escaping)设置为 false 时,它们的行为不正确 #39524 当配置属性绑定使用转换器从属性值创建一个 Map 时,属性占位符不会被解析 #39515 Gradle 插件允许使用 Gradle 7.4,但文档和测试的最低版本是 7.5 #39513 WebFlux 自动配置应仅在启用虚拟线程时配置 blocking executor #39469 TestcontainersPropertySource 断言有错别字 #39449 缺少参数时,Webflux actuator 端点的响应为 500 #39444 使用 non-shaded Pulsar 客户端和配置身份验证参数时出现 NoSuchMethod 错误 #39389 Jetty GracefulShutdown 会写入 System.

Spring Boot 3.2.2 发布

Spring Boot 3.2.2 版本的详细更新内容如下: 🐞 Bug 修复 SSLBundle 实现未提供有用的 toString() 结果 #39167 JarEntry.getComment() 从 NestedJarFile 实例返回不正确的结果 #39166 在 server.ssl 属性中混合 PEM 和 JKS 类型的证书不起作用 #39158 仅仅在 classpath 上引入 AspectJ 和 Micrometer 并不足以启用对 Micrometer observation 注解的支持 #39128 当映射到 / 时,无法访问未使用选择器(Selector)操作的 Actuator 端点。#39122 由于缺少 Authentication Manager,使用 WebFlux、Security 和 Actuator 的 Spring Boot 3.2 应用可能无法启动 #39096 management.observations.http.server.requests.name 不再生效 #39083 spring.rabbitmq.listener.stream.auto-startup 属性不起作用 #39078 PatternParseException 的日志信息中的错误标记位置不对 #39075 server.jetty.max-connections 配置无效 #39052 依赖于初始的 CharSequence 到 String 转换的 @ConfigurationPropertiesBinding 转换器不再起作用 #39051 在新的加载器实现中无法解析 Manifest attributes #38996 来自日志系统初始化的 Throwable 可能导致应用在启动时默默地失败 #38963 使用 Jetty 时,IO 操作和延迟调度的空闲超时不能设置为小于 30000ms #38960 当 jar 放在 WSL 网络驱动器上时,spring-boot-maven-plugin repackage uber jar 执行失败 #38956 Oracle OJDBC BOM 版本被标记为不适合生产使用 #38943 使用 jOOQ 且未设置 spring.

Spring Cloud 2023.0.0(代号 Leyton)发布

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.

Spring Boot 3.2.0 发布

该版本增加了大量新功能和改进。有关完整的 升级说明 以及 新的和值得注意 的功能,请参阅 发布说明。 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 正式发布

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.

Spring Boot v3.1.4 发布

⭐ 新特性 在 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.

Spring v6.0.12 发布

⭐ 新特性 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/.