新闻

Spring Boot v3.3.2 发布

Spring Boot v3.3.2 正式发布。 🐞 Bug 修复 没有在 Spring Integration 6.2 中引入的 defaultTimeout 设置的配置属性 #41521 在 OnClassCondition.resolveOutcomesThreaded 中进行自动配置时出现 NPE,因为 firstHalf 为 null #41504 Spring 授权服务器现在将 multipleIssuersAllowed 默认为 false,并且不容易重新启用 #41355 ServiceConnection 无法与 @DataLdapTest 一起使用 #41325 PropertiesMigrationListener 错误地将属性报告为过时属性 #41252 @NestedConfigurationProperty 对 Record 不起作用 #41251 TestcontainersLifecycleBeanPostProcessor 无法与 Scope Bean 正常工作 #41238 如果 spring.config.import 无法解析,错误信息可能具有误导性 #41236 Docker desktop 更新后,构建镜像失败,提示 “Illegal char <:> at index 5: npipe:////” #41234 使用 Jetty 时,Filter、Listener 和 Servlet 未使用同一线程上下文 classloader 初始化 #41225 在 Webflux 中使用 DirtiesContext、随机端口和多个上下文的情况下,可能会导致多个上下文的行为异常 #41221 在原生镜像中使用 spring-boot-starter-activemq 时,org.

Spring Framework v6.1.11 发布

Spring Framework v6.1.11 正式发布。 ⭐ 新特性 在 SpEL 的 ReflectionHelper 中确保 MethodHandle 的 varargs 组件类型不为 null#33193 在响应过程中出现 Reactor-Netty PrematureCloseException 时,WebClient 异常消息令人困惑 #33127 当发现无效的 factoryBeanObjectType 属性时,在异常中包含 Bean 名称 #33117 在响应式缓存切面使用 Error Handler #33073 getTypeForFactoryMethod 应捕获 NoClassDefFoundError 异常#33075 🐞 Bug 修复 SpEL 无法使用数组调用 varargs MethodHandle 函数 #33191 SpEL 无法调用变量参数为零的 varargs MethodHandle 函数 #33190 嵌套的 Bean 实例 Supplier 调用不会保留先前的工厂方法 #33180 DefaultErrorResponseBuilder 未实现 headers(Consumer) #33156 修复对 Set 方法参数的违规适配 #33150 使用 kotlinx-serialization 时,Web Controller 调用无效正文导致结果为 500,而不是 400 #33138 "file:.

Spring Boot v3.3.1 发布

Spring Boot v3.3.1 发布了,这是 Spring Boot v3.3 的第一个 BUG 修复版本。 🐞 Bug 修复 添加 org.springframework.boot.jdbc.parameters 标签后,SQL Server JDBC URL 出现格式错误 #41169 git-commit-id Maven 插件升级后,无法强制转换 Git instant 属性 #41152 将 status code 排除在 DefaultErrorAttributes 之外会引发 NPE(控指针异常)#41141 使用 devtools 进行 Spring Boot 远程重启时,在使用 java -jar 运行时会导致 Tomcat 错误 “factory already defined” #41107 MongoHealthIndicator 在严格设置下不符合 Mongo 稳定(Stable) API #41104 Bitnami MongoDB 服务连接失败 #41097 构建镜像时需要 Builder 指定一个栈(Stack)#41091 如果未包含 java.sql 模块,DataSourceProperties 绑定失败 #41084 使用 include 时,AOT 导致 Logback 配置错误 #41081 配置了 Builder 和 Buildpack 时,镜像构建挂起 #41049 尝试使用 Spring Boot 配置的 SSL 时,使用 Tomcat 的 HttpNio2Protocol 会抛出 IllegalArgumentException #41010 当包含 Multi-Release: true 的依赖项且 META-INF/versions 中存在意外文件条目时,Uber jar 启动失败 #41006 使用 Jetty 时,可执行 war 文件中可能找不到 JSP 相关资源 #40996 无论配置的最大线程数是多少,tomcat.

Spring Boot 3.3.0 正式发布

从 Spring Boot 3.2 进行升级 Jersey Observability(可观察性) Micrometer 1.13 已放弃对 Jersey 的支持,转而使用 Jersey 的 jersey-micrometer 模块。如果你的应用使用 Jersey 指标,请在升级时添加对 org.glassfish.jersey.ext:jersey-micrometer 依赖。 为了支持 Jersey 的可观察下,MetricsApplicationEventListener 已被替换为 ObservationApplicationEventListener。如果你之前使用 JerseyTagsProvider 自定义标签(Tag),现在需要实现一个 JerseyObservationConvention bean 来完成此功能。 删除了 Dropwizard 指标的 Dependency Management Dropwizard Metrics 的 Dependency management 理已删除。Spring Boot 并不直接依赖于 Dropwizard Metrics,因此不需要特定的版本。如果你的应用直接依赖于 Dropwizard Metrics,请更新你的构建配置,以指定满足其需求的版本。 Prometheus Client 1.x Spring Boot 3.3 包含对 Prometheus 客户端 1.x 的支持。该版本的客户端包含一些破坏性更改,例如对导出指标名称的更改。在 Prometheus 维护者添加该支持之前,1.x 客户端不支持使用 Prometheus Push Gateway。 如果你想继续使用 0.x 版本的 Prometheus 客户端,请从依赖中移除 io.micrometer:micrometer-registry-prometheus,并添加 io.

Spring Security 6.3.0 发布

Spring Security 6.3.0 正式发布! 6.3 版本带来了几个引人注目的特性,如下: 长期的 JDK 序列化向后兼容性 新的方法安全注解和功能 密码受损检查 支持 OAuth 2.0 令牌交换 该版本将包含在即将发布的 Spring Boot 3.3 GA 版本中。 ⭐ 新特性 为 OAuth2AuthorizedClientId 添加 Getter #13648 为 JwtDecoders 添加超时默认值 #14890 文档:添加了将 GrantedAuthorityDefaults 声明为基础架构 Bean 的提示 #15065 改进全局身份认证(Global Authentication)的日志记录 #14711 文档小修正 #15043 需要对使用 Kotlin DSL 的导入进行微小的文档更新 #14969 OAuth2 客户端身份认证文档不完整 #14982 校对 CasAuthenticationFilter 文档 #14883 将 “Spring Boot 2.x” 替换为 “Spring Boot” #14919 简化禁用 “application/x-www-form-urlencoded” 编码 Client ID 和 Secret#14859 支持为依赖方注册元素指定标识符 #14487 更新 6.

Spring Boot 3.2.5 发布

🐞 Bug 修复 BindValidationFailureAnalyzer 使用了错误的 target #40364 Log4j2LoggingSystem 通过一个永远不会被移除的 SpringEnvironmentPropertySource 污染 Log4j2 的环境 #40326 使用 Maven 时,配置 spring-boot.excludes 或 spring-boot-includes 用户属性会导致构建失败,提示:Cannot find default setter #40323 @ServletComponentScan 无法在模拟的 Web 环境中注册 Servlet 组件 #40321 在将 Log4j2 配置为使用单个 JVM 范围日志记录器上下文的情况下部署到 Tomcat 时,加载自定义的 deny-all 过滤器可能会导致 StackOverflowError 错误 #40312 Jetty 支持不设置虚拟线程名称 #40152 3.2.0 之后,当 Hibernate Scanner 未禁用时,可执行 JAR 应用的启动速度变慢 #40125 线程中断时,LaunchedClassLoader 可能会抛出 NoClassDefFoundError 错误 #40096 📔 文档 Producible 的 javadoc 中 @WriteOperation 和 @DeleteOperation 的链接文本有误 #40386 明确参数和构造函数绑定的要求 #40157 🔨 依赖升级 升级到 ActiveMQ 5.

Hello,Java 22

Java 22 是一个重大改进,我认为对于每个人来说都值得升级。其中包含了一些重要的最终发布功能,比如 Project Panama,以及许多更好的预览功能。我无法一一介绍,但我想简要介绍一些我最喜欢的功能。如果你也想尝试一下的话,代码在 这里(https://github.com/spring-tips/java22)。 我喜欢 Java 22,当然也喜欢 GraalVM,这两个版本今天都发布了!Java 当然是我们最喜欢的运行时和语言,而 GraalVM 则是一个高性能的 JDK 发行版,它支持其他语言并允许超前编译(AOT)(它们被称为 GraalVM 原生镜像)。GraalVM 包含新 Java 22 版本的所有功能,还有一些额外的实用工具,所以我一直建议下载此版本。我特别感兴趣的是 GraalVM 原生镜像功能。生成的二进制文件几乎可以立即启动,与 JRE 相比占用的内存也少得多。GraalVM 并不新鲜,但值得注意的是,Spring Boot 拥有一个强大的引擎,支持将 Spring Boot 应用转化为 GraalVM 原生镜像。 简介 我使用的是的 Java SDKMAN 包管理器。在运行 macOS 的苹果 Silicon 芯片上运行。 从 官网 下载安装 GraalVM Community Edition 的预发布版,GraalVM Community 是开源版本。(GraalVM 也有免费的商业版本,但不是开源的)。它允许你通过配置文件引导优化(PGO)等技术构建更快的本地镜像。 解压它,并使用 SDKMAN 命令行工具手动安装,如下所示: sdk install java 22.07-graalce $HOME/bin/graalvm-jdk-22+36.1/Contents/Home` 然后输入:sdk default java 22.07-graalce,打开了一个新的 shell。输入 javac --version 和 java --version 以及 native-image --version 来验证一切正常。

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.