新闻

Spring AI 1.0 正式 GA

Spring AI 1.0 正式发布。 快速开始 构件已经发布到 maven central,可以通过提供的 bom 导入依赖项。 <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.ai</groupId> <artifactId>spring-ai-bom</artifactId> <version>1.0.0</version>0 <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> 请查看 升级说明,了解最新的更改和升级方法。注意:你可以使用 OpenRewrite Recipe 自动升级到 1.0.0-GA。这可帮助应用此版本的许多必要代码更改。可在 Arconia Spring AI Migrations 查找使用说明。 你可以在 Intialzr 网站上开始创建 1.0 GA 应用,并阅读参考文档中的 “入门” 部分。 博客 这有一些博客精选,这些博客展示了如何以各种方式使用 Spring AI: 微软 Azure 博客 和 视频。特别感谢 Asir Selvasingh,他在 2023 年拉斯维加斯 Spring One 大会上帮助我们 发布了 Spring AI AWS - 博客 - Spring AI 1.0 为广大开发人员带来人工智能技术 Google - 博客 - Google Cloud 和 Spring AI 1.

Spring Boot v3.4.5 发布

🐞 Bug 修复 由于目录权限问题,使用原生镜像容器映像在 podman 上构建 Spring Boot 失败 #45256 Neo4jReactiveDataAutoConfiguration 假定某些 Bean 可用 #45235 使用空数据库名称时出现错误的 jOOQ 异常翻译 #45219 MessageSourceMessageInterpolator 不会在 message 与其 code 匹配时替换参数 #45213 IntegrationMbeanExporter 不符合由所有 BeanPostProcessors 处理的条件,使用 JMX 时会显示警告 #45194 OAuth2AuthorizationServerJwtAutoConfiguration 错误地使用了 @ConditionalOnClass #45178 MongoDB 的依赖管理缺少 Kotlin coroutine 驱动模块 #45159 ImagePlatform 可能导致 “OS must not be empty” 的 IllegalArgumentException #45153 TypeUtils 无法处理不同位置上名称相同的泛型 #45039 HttpClient 5 5.4.3 会中断本地 Docker transport #45028 不能使用 spring.datasource.hikari.data-source-class-name,因为驱动程序类名总是必需的,而 Hikari 不同时接受这两个名称。 #45002 如果 JDBC URL 用于未知驱动程序,则应用自定义 JdbcConnectionDetails 的后处理会在 Hikari 中触发 NPE #44998 在 Hikari 中,当尝试使用未知驱动程序的 JDBC URL 构建数据源时,DataSourceBuilder 会触发 NPE。 #44995 SSL 配置不监控链接文件的更改 #44887 EmbeddedLdapAutoConfiguration 不应依赖于 PreDestroy #44874 DataSourceTransactionManagerAutoConfiguration 应在 DataSourceAutoConfiguration 之后运行 #44819 JsonValueWriter 会对深度嵌套的项目抛出 StackOverflowError 错误#44627 在响应式 web 应用中,如果不使用 ‘file:’ 前缀,SslBundle 将无法打开 store 文件位置 #44535 使用结构化日志记录 Path 对象抛出 StackOverflowError #44507 📔 文档 将 @Component 设为 javadoc 链接 #45258 修复指向 buildpacks.

Spring Cloud Data Flow 停止开源

TL;DR; 今天,官方宣布今后将不再以开源项目的形式维护 Spring Cloud Data Flow、Spring Cloud Deployer 或 Spring Statemachine。Spring Cloud Data Flow 2.11.x、Spring Cloud Deployer 2.9.x 和 Spring Statemachine 4.0.x 将是最后一批开源项目,今后的版本将仅提供给 Tanzu Spring 客户。这一变更不会影响 Spring 开源产品组合的其他部分,也不会影响现有用户对当前可用开放源码软件版本的支持义务。 Spring Cloud Data Flow 起源于八年前的 Spring XD,用于协调批处理和流工作负载,多年来在客户中取得了巨大成功。然而,为了让 Spring Cloud Data Flow 和相关生态系统项目在未来以可持续的方式发展下去,我们决定只将 Spring Cloud Data Flow 作为商业产品发布。 这一决定并不是轻易做出的,其主要原因是这些项目在我们的社区中得到了广泛采用。我们所看到的 Spring Cloud Data Flow 的绝大多数使用情况都发生在我们的 Tanzu 企业客户中。目前,开源应用只占总体应用的很小一部分,而社区提供的维护贡献同样很小。在过去的两年中,Spring Cloud Data Flow 的维护工作几乎完全由 Tanzu 的研发团队负责,而 Spring 产品组合中的绝大多数产品则由充满活力的社区以多种方式进行维护。Spring Statemachine 和 Spring Cloud Deployer 的采用模式与 Spring Cloud Data Flow 相似,它们的使用主要是由于 Spring Cloud Data Flow 中包含了 Spring Statemachine 和 Spring Cloud Deployer。

Spring Boot v3.4.2 发布

🐞 Bug 修复 logging.structured.json.customizer 的属性元数据类型不正确 #43916 仅指定 logging.structured.gelf.host 时,GraylogExtendedLogFormatProperties 会抛出 NullPointerException 异常 #43863 结构化日志属性在 Native Image 中不起作用 #43862 当 ALLOW_EMPTY_PASSWORD=yes 时,ClickHouse 的 Docker Compose 支持不允许使用空密码 #43790 在 2.23 或更早版本中,docker compose ps 现在会因为未知的 --orphans flag 而失败 #43717 构建信息时间戳被截断为秒 #43617 用于 SSL 重载的 FileWatcher 不支持 Symlink #43604 BindableRuntimeHintsRegistrar 应处理 TypeNotPresentException #43600 使用 Log4J2 StatusLogger 时,CapturedOutput 为空 #43578 Spring Boot 3.4 与 Gson 2.1 不兼容 #43442 使用 JUnit 测试依赖 spring-boot-actuator-autoconfigure 但不依赖 org.junit.platform:junit-platform-launcher 的 Gradle 7.

Spring Boot v3.4.1 发布

🐞 Bug 修复 当 Bundle name 为空字符串时,KafkaProperties 无法构建 SSL properties #43563 当属性解析抛出 ConversionFailedException 时,诊断功能很差 #43559 SpringApplicationShutdownHandlers 不按确定顺序运行 #43536 无法找到 @SpringBootConfiguration 导致误导性错误信息 #43507 如果上下文中有多个 ResourceHandlerRegistrationCustomizer Bean,则只使用其中一个 #43497 混合使用专用(dedicated)服务和共享(shared)服务时无法使用 Docker Compose 支持 #43472 Kafka dependency management 不包括 kafka-server 模块 #43454 当 ‘/_ping’ 调用失败并且版本应该修复时,Docker API 版本被错误地报告 #43452 从 KafkaProperties 建立生产者/消费者属性的方法在没有 SSL Bundle 的情况下不便使用 #43448 -Djarmode=tools 中的故障不会持续返回非零退出值 #43436 HttpComponentsClientHttpRequestFactoryBuilder 代替了现有的 defaultRequestConfigCustomizer,而不是对其进行添加 #43429 即使 imagePlatform 为空,spring-boot-maven-plugin 也会设置它 #43424 OnBeanCondition fails to match on annotations when using Scoped Proxies #43423 使用作用域(Scope)代理时,OnBeanCondition 无法与注解匹配 #43382 H2ConsoleAutoConfiguration 会导致提前初始化数据源 Bean #43359 接受大于 2GB 的数字进度 #43356 基于 Servlet 的 UserDetailsServiceAutoConfiguration 在响应式应用程序中处于活动状态 #43334 在 spring.

Reactor 2024.0 发布,支持 HTTP/3

HTTP/3 是 Hypertext Transfer Protocol(超文本传输协议,即 HTTP)的最新主要版本,其规范已于 2022 年 6 月定稿。该版本旨在提高性能、可靠性和安全性。与之前的版本不同,HTTP/3 使用 QUIC 而不是 TCP 作为传输层。QUIC 是一种基于 UDP 的多路复用安全传输协议,内置 TLS 1.3 加密,默认情况下 QUIC 是加密的。 要进一步了解 HTTP/3 的性能和优势,可以查看 《什么是 HTTP/3》。 有关浏览器采用情况的信息,请参阅《检查 HTTP/3 使用情况》,其中还提供了不同浏览器使用的 HTTP 版本的原始数据。 Reactor Netty 1.2(Reactor 2024.0 发布系列的一部分)添加了对 HTTP/3 的实验性支持。通过这个新版本的 Reactor Netty,你可以配置你的 Spring Boot 应用和 Spring Cloud Gateway 来支持 HTTP/3。 下面让我们看看如何配置 HTTP/3 支持。 配置 Reactor BOM Version Spring Boot 3.4 默认集成了 Reactor 2024.0 发布系列! 如果你运行的是旧版本的 Spring Boot,你可以将 Reactor BOM 升级到 2024.

Spring Boot 3.4 发布

从 Spring Boot 3.3 升级 RestClient 和 RestTemplate 已添加对自动配置 RestClient 和 RestTemplate 以使用 Reactor Netty 的 HttpClient 或 JDK 的 HttpClient 的支持。按优先顺序,现在支持的客户端如下: Apache HTTP Components(HttpComponentsClientHttpRequestFactory) Jetty Client (JettyClientHttpRequestFactory) Reactor Netty HttpClient (ReactorClientHttpRequestFactory) JDK HttpClient (JdkClientHttpRequestFactory) Simple JDK HttpURLConnection (SimpleClientHttpRequestFactory) 需要注意的是,如果类路径上没有 HTTP Client 库,就可能会使用 JdkClientHttpRequestFactory,而之前使用的是 SimpleClientHttpRequestFactory。可以通过设置 spring.http.client.factory 来选择特定的客户端。支持的值包括 http-components、jetty、reactor、jdk 和 simple。 默认情况下,所有五个客户端都会自动跟随重定向。要禁用此行为,可将 spring.http.client.redirects 设置为 dont-follow 。 Apache HTTP Components 和 Envoy Apache HTTP Components(组件)更改了 HttpClient 中有关 HTTP/1.1 TLS 升级的默认设置。大多数代理服务器都能顺利处理升级,但 Envoy 或 Istio 可能会遇到问题。

Spring Boot v3.3.4 发布

Spring Boot v3.3.4 现已发布。 🐞 Bug 修复 当封装了 AbstractRoutingDataSource 时,management.health.db.ignore-routing-datasources=true 无效 #42322 OAuth2ClientProperties 验证错误信息中缺少详细信息 #42279 来自未使用的错误配置 SSL bundle 的 FileNotFoundException #42169 当 spring-web 不在 classpath 上时,ZipkinHttpClientSender 会出现 “Failed to introspect Class”(类自省失败)#42161 与容器 Bean 一起使用时,@RestartScope 可能会导致 “Recursive update(递归更新)”异常 #42107 JarLauncher 无法加载大型 jar 文件 #42079 PropertiesMigrationListener 错误地将具有 group 的属性报告为已废弃属性 #42071 在 MongoDB 中使用空字符串的 ‘replica-set-name’ 属性将导致 ClusterType=REPLICA_SET #42059 默认 Logback 配置使用过时的 “converterClass” 属性 #42006 📔 文档 关于 spring.jmx.enabled 不适用于第三方库的文件 #42285 更新指向 Log4j2 系统属性(system properties)的链接 #42263 参考指南中的 GraphQL 链接重定向到根目录,而不是特定部分 #42208 参考指南中 “被动接收信息部分(Receive a message reactively section)” 的语法错误 #42200 autotime 启用、percentiles 和 percentiles-historgram 属性被废弃的原因令人困惑。 #42193 在属性文件中用 RFC 9457 取代 RFC 7807 #42190 不支持将配置属性绑定到带有默认值的 Kotlin 值类的文档 #42176 更新文档以反映新的未找到 Handler 的异常行为 #42167 波兰语配置属性参考 #42165 移除指向 “将 Spring Boot JAR 应用转换为 WAR” 的链接,因为该指南已不再可用 #42111 修正 Metric 文档页面上的 StatsD 链接错字 #42109 改进无需构建包的 docker 文档 #42106 改进 “命令行自动补全”中的文档 #42103 测试部分缺少 Kotlin 代码示例 #42094 修复 Colima 的 Docker 配置中的错误命令 #42078 Gradle Plugin AOT 文档中有示例错误 #42046 🔨 依赖升级 升级依赖到 Groovy 4.

Spring Boot v3.3.3 发布

Spring Boot v3.3.3 发布了。 ⭐ 新特性 在 JavaVersion 枚举中添加 TWENTY_THREE #41716 🐞 Bug 修复 继承 DefaultErrorAttributes 并覆写 getErrorAttributes() 会被调用两次 #41995 在使用 WebFlux 时,当 ResponseStatusException 的原因是 BindingResult 异常时,server.error.include-binding-errors=ALWAYS 不生效 #41987 将 BOOT-INF/lib 中的 jar 添加到 classpath 时,PropertiesLauncher 不遵循 classpath.idx #41970 /cloudfoundryapplication 下 SBOM 端点的 Web 扩展不可用 #41890 启动器(Launcher)的 ClassLoader 不再具有并行功能 #41873 spring-boot-testcontainers 会在 AOT 处理过程中导致不必要的容器初始化 #41859 当 Reactor 不在类路径上时,ReactiveElasticsearchRepositoriesAutoConfiguration 应关闭 #41678 当 classifier 设置为非默认值时,mvn spring-boot:build-image 失败 #41661 Spring Boot Maven 插件 AOT 无法使用 module-info.

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.