跳转至

Spring-Boot v3.4.1

为什么要使用Spring-Boot

在现代软件开发中,时间就是金钱。开发者们常常面临着快速交付高质量产品的压力,而Spring-Boot恰恰是为了解决这一矛盾而诞生的。想象一下,你正在开发一个复杂的企业级应用,面对繁琐的配置和无尽的依赖管理,开发进度却因这些琐事而停滞不前。Spring-Boot的出现,犹如一缕春风,简化了配置,自动化了许多繁琐的任务,让开发者能够专注于业务逻辑的实现。它不仅提高了开发效率,还让团队能够更快地响应市场需求,真正实现了“快速开发、快速迭代”的目标。

Spring-Boot是什么

Spring-Boot是一个开源的Java框架,旨在简化Spring应用程序的开发过程。它通过提供开箱即用的配置和自动化的设置,帮助开发者快速构建独立的、生产级的Spring应用。Spring-Boot的核心理念是“约定优于配置”,这意味着开发者可以通过简单的配置来实现复杂的功能,从而大大减少了开发时间和学习曲线。

入门示例

假设你是一名开发者,正在为一家初创公司构建一个在线商店。你希望快速搭建一个RESTful API来处理商品的增删改查。使用Spring-Boot,你只需几行代码即可实现这一目标。首先,创建一个Spring-Boot项目,添加所需的依赖项,如Spring Web和Spring Data JPA。然后,定义一个商品实体类和一个控制器,处理HTTP请求。最后,运行应用程序,你的API就可以在几秒钟内启动并运行,支持基本的CRUD操作。这种快速开发的能力使得你能够在竞争激烈的市场中迅速推出产品。

Spring-Boot v3.4.1版本更新了什么

Spring-Boot v3.4.1版本带来了多个重要的更新,包括修复了KafkaProperties在空字符串情况下构建SSL属性的错误,改善了属性解析时的诊断信息,确保SpringApplicationShutdownHandlers以确定的顺序运行。此外,更新还解决了多个与Docker和Kafka相关的问题,增强了整体的稳定性和性能。

更新日志

🐞 Bug 修复

  • KafkaProperties在空字符串情况下无法构建SSL属性。
  • 当属性解析抛出ConversionFailedException时,诊断信息不佳。
  • SpringApplicationShutdownHandlers未按确定顺序运行。
  • 找不到@SpringBootConfiguration时,错误信息误导。
  • 上下文中多个ResourceHandlerRegistrationCustomizer bean时,仅使用其中一个。
  • 混合专用和共享服务时无法使用Docker Compose支持。
  • Kafka依赖管理未包含kafka-server模块。
  • 当/_ping调用失败时,Docker API版本报告不正确,版本应固定。
  • 从KafkaProperties构建生产者/消费者属性的方法在没有SSL包时使用不便。
  • -Djarmode=tools中的失败未始终返回非零退出。
  • HttpComponentsClientHttpRequestFactoryBuilder替换现有的defaultRequestConfigCustomizer,而不是添加到其中。
  • spring-boot-maven-plugin即使为空也设置imagePlatform。
  • 使用Scoped Proxies时,OnBeanCondition未能匹配注解。
  • 对InvalidConfigurationPropertyValueException的失败分析未正确处理环境变量的模糊匹配。
  • H2ConsoleAutoConfiguration导致DataSource beans的早期初始化。
  • 接受大于2GB的数字进度。
  • 基于Servlet的UserDetailsServiceAutoConfiguration在反应式应用中处于活动状态。
  • 在spring.factories中声明的StructuredLoggingJsonMembersCustomizer实现未被调用。
  • 使用环境变量覆盖日志级别时,在使用环境前缀时不起作用。
  • 管理端点访问和启用属性被忽略,除非端点ID完全匹配。
  • 在启用虚拟线程的Java 21上启动Maven阴影应用时出现UnsupportedOperationException。
  • 自3.4.0以来,JmsListener与Narayana(池化ConnectionFactory)不兼容。
  • SslBundle在不使用'file:'前缀的情况下无法打开存储文件位置。
  • TestRestTemplate不允许自定义重定向。
  • Testcontainers的start()方法可能被多次启动。

📔 文档

  • 修复文档中的拼写错误。
  • 记录server.ssl.cipher和server.ssl.enabled-protocols不是与SSL包一起使用的回退。
  • 在Maven示例中使用配置注解处理器。
  • 修复拼写错误。
  • 链接到logback javadoc不正确。
  • 修复JUnit javadoc链接。
  • 参考文档错误地使用'disabled'而不是'none'进行访问限制。
  • 在参考文档的Logging部分恢复系统属性。
  • 修复@AutoConfiguration javadoc中proxyBeanMethods的链接。
  • 修复Servlet和JPA javadoc的链接。
  • 链接到@EnableMethodSecurity而不是已弃用的@EnableGlobalMethodSecurity。
  • 记录StructuredLoggingJsonMembersCustomizer实现可以选择性地接受构造函数参数。
  • 更新StructuredLoggingJsonMembersCustomizer的Javadoc,说明实现可以通过spring.factories注册。
  • 修复Hikari的Javadoc链接。
  • 记录如何使用自定义日志配置进行结构化日志记录。
  • 更新OtlpMetricsProperties和OtlpTracingProperties的Javadoc。

🔨 依赖升级

  • 升级到Byte Buddy 1.15.11。
  • 升级到Couchbase Client 3.7.6。
  • 升级到CycloneDX Maven Plugin 2.9.1。
  • 升级到Dependency Management Plugin 1.1.7。
  • 升级到Elasticsearch Client 8.15.5。
  • 升级到Hibernate 6.6.4.Final。
  • 升级到Hibernate Validator 8.0.2.Final。
  • 升级到Jackson Bom 2.18.2。
  • 升级到Jetty 12.0.16。
  • 升级到jOOQ 3.19.16。
  • 升级到JUnit Jupiter 5.11.4。
  • 升级到Log4j2 2.24.3。
  • 升级到Micrometer 1.14.2。
  • 升级到Micrometer Tracing 1.4.1。
  • 升级到Native Build Tools Plugin 0.10.4。
  • 升级到Netty 4.1.116.Final。
  • 升级到Prometheus Client 1.3.5。
  • 升级到Pulsar 3.3.3。
  • 升级到Pulsar Reactive 0.5.10。
  • 升级到Reactor Bom 2024.0.1。
  • 升级到RxJava3 3.1.10。
  • 升级到Spring AMQP 3.2.1。
  • 升级到Spring Authorization Server 1.4.1。
  • 升级到Spring Batch 5.2.1。
  • 升级到Spring Data Bom 2024.1.1。
  • 升级到Spring Framework 6.2.1。
  • 升级到Spring HATEOAS 2.4.1。
  • 升级到Spring Integration 6.4.1。
  • 升级到Spring Kafka 3.3.1。
  • 升级到Spring LDAP 3.2.10。
  • 升级到Spring Pulsar 1.2.1。
  • 升级到Spring Retry 2.0.11。
  • 升级到Spring Security 6.4.2。
  • 升级到Spring Session 3.4.1。
  • 升级到SQLite JDBC 3.47.1.0。
  • 升级到Thymeleaf 3.1.3.RELEASE。

总结

在Spring-Boot v3.4.1版本中,开发团队进行了多项重要的Bug修复和文档更新,提升了整体的稳定性和用户体验。同时,多个依赖项也得到了升级,确保了框架的现代化和兼容性。这些更新不仅解决了现有的问题,还为开发者提供了更好的支持,进一步推动了Spring-Boot在开发领域的广泛应用。