跳转至

Spring-Boot v3.4.0-RC1

为什么要使用Spring-Boot

在现代软件开发中,时间就是金钱。开发者们常常面临着快速交付和高质量代码之间的矛盾。Spring-Boot的出现,正是为了打破这一僵局。它通过简化配置和自动化设置,让开发者能够专注于业务逻辑,而不是繁琐的环境配置。想象一下,你正在开发一个新项目,面对复杂的依赖关系和配置文件,焦虑感油然而生。而Spring-Boot则像一位得力助手,帮助你迅速搭建起应用框架,省去无数的时间和精力。

Spring-Boot是什么

Spring-Boot是一个开源框架,旨在简化Spring应用程序的开发过程。它通过提供开箱即用的配置和自动化设置,使得开发者能够快速构建独立的、生产级的Spring应用。Spring-Boot的核心理念是“约定优于配置”,这意味着它会根据项目的需求自动配置所需的组件,从而减少手动配置的复杂性。

入门示例

假设你正在开发一个在线书店的应用。使用Spring-Boot,你可以通过简单的命令行指令快速创建项目结构。只需运行以下命令:

spring init --dependencies=web,data-jpa,h2 book-store

这条命令将创建一个包含Web、JPA和H2数据库支持的项目。接下来,你只需编写控制器和服务类,便可以快速实现书籍的增删改查功能。Spring-Boot的自动配置将为你处理数据库连接、REST API的创建等繁琐的细节,让你专注于实现业务逻辑。

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

Spring-Boot v3.4.0-RC1版本带来了多项重要更新,包括增强的Web服务支持、RestTemplateBuilder的requestFactorySettings方法、统一HTTP客户端重定向行为的配置选项等。此外,新增了对ClickHouse的支持,并移除了在3.4.0版本中已弃用的功能。这些更新旨在提升开发者的使用体验和应用性能。

更新日志

⭐ 新特性

  • 更新Web服务支持,利用ClientHttpRequestFactoryBuilder。
  • 为RestTemplateBuilder添加requestFactorySettings方法。
  • 重命名RestTemplateBuilder的'set'方法。
  • 统一默认HTTP客户端重定向行为,并提供配置选项。
  • 为ClickHouse添加Testcontainers和Docker Compose支持。
  • 支持ApplicationResourceLoader的ResourceLoader委托。
  • 在DatabaseDriver枚举中添加ClickHouse JDBC驱动支持。
  • 添加控制OTLP日志导出的属性。
  • 移除在3.4.0中已弃用的剩余功能。
  • 为索引反应式会话存储库的自动配置提供支持。
  • 检测JsonMixin注解的意外错误配置。
  • 在ClientHttpRequestFactories中支持Reactor Netty。
  • 添加指定Docker Compose标志的属性。
  • 将OtlpAutoConfiguration重命名为OtlpTracingAutoConfiguration。
  • 为OTLP日志记录和跟踪添加连接超时属性。
  • 添加management.otlp.logging.transport属性。
  • 使用builder-jammy-java-tiny构建包。
  • 允许自定义结构化日志JSON。
  • 将Gradle的最低支持版本提升至8.4。
  • 统一接受以逗号分隔的值的配置属性。
  • 允许为消息源指定通用消息。
  • 提供配置Jetty最大表单键的属性。
  • 为Hazelcast提供服务连接支持。
  • 使OtlpMeterRegistry支持虚拟线程。
  • 改进SpringEnvironmentLookup异常提示,指示log4j2文件必须带有'-spring'后缀。
  • 允许自动配置的org.jooq.Configuration用于创建自定义DSLContext。
  • 添加对分区Cookie的支持。
  • 弃用对DynamicPropertyRegistry的支持,转而支持DynamicPropertyRegistrar beans。
  • 当构建镜像时,警告用户提供敏感目标的卷挂载。
  • 仅在主服务器关闭后关闭管理服务器。
  • 导出包含在native-image中的SBOM。
  • 引入@BatchTaskExecutor,简化Spring Batch自定义任务执行器的配置。
  • 通过配置限制actuator访问的读/写/删除操作。
  • 提供进一步自定义底层ClientHttpRequestFactory组件的方法。
  • 为虚拟线程支持自动配置Undertow/XNIO。
  • 提供轻松配置全局客户端HTTP请求工厂设置的机制。

🐞 Bug修复

  • 运行mvn spring-boot:run时,类路径超过Windows长度限制会留下临时文件。
  • 从ForkJoinPool任务加载协议解析器时抛出ClassNotFoundException。
  • ConditionReportApplicationContextFailureProcessor生成的报告在失败测试中始终为空。
  • 用户的区域设置可能会对不区分大小写的比较产生不利影响。
  • server.tomcat.reject-illegal-header自2.7.12起已弃用,应在3.3.0中移除。
  • DataSourceProperties#driverClassIsLoadable失败时不应在错误流中打印堆栈跟踪。
  • 一些@ControllerEndpoint和@RestControllerEndpoint基础设施仍未弃用。
  • Rabbit Streams的自动配置未考虑RabbitConnectionDetails。
  • @ConditionalOn(Missing)Bean(annotation = …)在@Bean方法上使用时推断类型以匹配。
  • ActiveMQ Artemis连接工厂在native image中创建失败。
  • 当上下文包含多个注册表且没有主注册表时,重复计量绑定。
  • 当环境使用AOT优化的应用程序准备时,配置文件未激活。

📔 文档

  • 更新HttpWebServiceMessageSenderBuilder的javadoc。
  • 记录HttpClientAutoConfiguration的更新。
  • 根据HTTP客户端更改更新Web服务文档。
  • 将默认值描述移至日志属性元数据中的“描述”。
  • 记录嵌入式Tomcat必须至少为10.1.25。
  • 更新文档,建议在一个bean上使用@Qualifier,在另一个bean上使用@Primary,建议使用一个默认候选为false的单一bean。
  • 修复systemd示例配置。
  • 记录最大HTTP请求头大小属性的确切行为是服务器特定的。
  • 澄清为何在定义自己的ObjectMapper以替代JacksonAutoConfiguration时推荐使用@Primary。
  • 改进Binder#bindOrCreate(String, Class)的javadoc。
  • 记录Tomcat的maxQueueCapacity需要大于0。
  • 移除指向jar-to-war入门指南的过时链接。
  • 修复文档中的拼写和格式错误。
  • 修复“清理敏感值”中的示例使用的大小写。
  • 修复Regex javadoc链接。
  • 记录环境变量如何绑定Map属性。
  • 改进可重现构建的类路径索引文档。
  • 改进CycloneDX集成的文档。
  • 移除指向Spring Data GemFire的链接。
  • 文档缺少MyCustomFormat.kt示例。
  • 链接到框架文档,关于@Bean的autowireCandidate和defaultCandidate。
  • 按字母顺序排列公共应用程序属性中的部分。

总结

在Spring-Boot v3.4.0-RC1版本中,新增了多项特性和修复,旨在提升开发者的使用体验。更新包括增强的Web服务支持、对ClickHouse的支持以及多项Bug修复,确保开发者能够更加高效地构建和维护应用程序。