跳转至

Spring-Boot v3.5.0-M2

为什么要使用Spring-Boot

在当今快速发展的技术世界中,开发者面临着一个矛盾:如何在保持高效的同时,确保代码的可维护性和可扩展性?Spring-Boot正是为了解决这个问题而诞生的。它以简化的配置和自动化的特性,帮助开发者快速构建和部署应用程序,消除了繁琐的设置过程。想象一下,你在一个项目中投入了大量时间,但最终却因为复杂的配置而感到沮丧。Spring-Boot的出现,犹如一缕阳光,照亮了开发者的道路,让他们能够专注于业务逻辑,而不是无尽的配置文件。

Spring-Boot是什么

Spring-Boot是一个开源框架,旨在简化Spring应用程序的开发过程。它通过提供一系列的默认配置和自动化功能,使得开发者能够快速创建独立的、生产级的Spring应用程序,而无需进行繁琐的配置。Spring-Boot的核心理念是“约定优于配置”,这意味着它会为你做出许多合理的默认选择,从而减少开发时间和复杂性。

入门示例

假设你正在开发一个在线书店的应用程序。使用Spring-Boot,你可以通过简单的命令行指令快速启动一个新的项目。只需输入spring init --dependencies=web my-bookstore,你就能创建一个包含Web依赖的基础项目。接下来,你可以轻松地添加控制器、服务和数据访问层,快速实现书籍的增删改查功能。Spring-Boot的内置Tomcat服务器使得你可以在本地运行应用程序,实时查看效果,极大地提高了开发效率。

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

Spring-Boot v3.5.0-M2版本带来了多项重要更新,包括移除过时的micrometer.observations.annotations.enabled配置,自动配置CqlTemplate和ReactiveCqlTemplate,新增ObjectDirectoryMapper bean的自动配置,以及对Spring Kafka的authExceptionRetryInterval属性的支持。此外,Mappings Endpoint现在支持web-servlet路由功能,提升了开发灵活性。

更新日志

⭐ 新特性

  • 移除过时的micrometer.observations.annotations.enabled配置
  • 自动配置CqlTemplate和ReactiveCqlTemplate
  • 自动配置ObjectDirectoryMapper bean,并配置LdapTemplate使用它
  • 在JavaVersion枚举中添加TWENTY_FOUR
  • 添加配置属性以设置Spring Kafka的authExceptionRetryInterval
  • 重命名management.server.accesslog.prefix,以明确其不影响Netty
  • Mappings Endpoint支持web-servlet路由功能
  • 添加配置属性以设置Spring MVC的默认内容类型
  • ConversionServiceDeducer应检测更多bean类型并支持lambda
  • 添加'spring.r2dbc.pool.acquire-retry'属性
  • 忽略不可绑定的DataSource属性
  • 弃用SignalFX支持
  • 对于布尔属性,使用isXxx()代替getXxx()
  • 当使用自定义Logback文件时,注册Logback OnErrorConsoleStatusListener
  • 更新PrometheusPushGatewayManager以使用新的Prometheus客户端
  • 允许在使用结构化日志时处理堆栈跟踪
  • 自动配置VirtualThreadMetrics
  • 在本地镜像中移除java.home系统属性的使用
  • 添加对多个StructuredLoggingJsonMembersCustomizers的支持
  • 通过Actuator端点按需触发Quartz作业
  • 更容易在SslManagerBundle中提供自定义TrustManagers
  • 支持通过spring.config.import加载嵌入在环境变量中的配置文件(YAML和属性)
  • 考虑如何从ConnectionDetails提供SSL
  • 在HTTP响应头中写入TraceId
  • 更容易添加SanitizingFunction以掩盖特定名称的属性
  • 提供配置属性以配置外部jOOQ设置文件
  • 添加按HTTP方法匹配Endpoint请求的能力
  • 为通用@Bean返回类型提供ConditionalOnBean支持
  • 通过解析bean方法签名泛型支持基于lambda的转换器
  • 使@ConditionalOnProperty和@ConditionalOnBooleanProperty可重复
  • 提供机制以在元数据中隐藏属性

🐞 Bug修复

  • 使用Log4j2时,控制台输出可能会丢失
  • Maven插件在Windows上不一致地使用ArgFile作为类路径参数
  • 非默认DataSource候选者未在H2ConsoleAutoConfiguration中考虑
  • 当配置使用Jetty不支持的服务器名称包时,Reactive Jetty web服务器未能快速失败
  • 当web服务器应用程序上下文刷新失败时,原始失败信息会丢失
  • 如果spring-webmvc不存在,Thymeleaf的视图解析器应退回
  • 当ReactiveWebServerApplicationContext刷新失败时,WebServer未被销毁
  • 开发期间,Banner占位符和默认值无法正常工作
  • 指标和健康检查不包括非默认候选bean
  • Reactive Jetty、Tomcat和Undertow管理服务器未将管理前缀应用于其访问日志
  • Mustache模板在Content-Type响应头中返回ISO-8859-1字符集而非UTF-8
  • 使用默认管理安全性与WebFlux和健康探测器启用时出现ClassCastException
  • Servlet EndpointRequest未正确匹配web服务器命名空间
  • 依赖于内部类的Logback配置在本地镜像中无法工作
  • 在3.3.8或3.4.2之后,注册SSL包时出现IllegalStateException

📔 文档

  • 文档说明自动配置类应使用其二进制名称进行标识
  • 更正MVC安全性中的拼写错误,解释UserDetailsService自动配置何时会退回
  • 链接JarLauncher的javadoc
  • 使用可观察性注解时,建议小心避免双重仪器化
  • 修正“运行应用程序”中的拼写错误
  • 文档说明在使用没有shell的Docker镜像时的Kubernetes preStop处理程序
  • 在“开发第一个Spring Boot应用程序”部分中,源代码片段使用根包
  • 更正“开发第一个Spring Boot应用程序”中的MyApplication.java位置
  • 添加指向Jackson Javadoc的链接
  • 警告某些Quartz数据库模式脚本在使用前必须修改

🔨 依赖升级

  • 升级到Brave 6.1.0
  • 升级到Byte Buddy 1.17.1
  • 升级到Cassandra Driver 4.19.0
  • 升级到Commons Codec 1.18.0
  • 升级到Commons Pool2 2.12.1
  • 升级到Couchbase Client 3.7.8
  • 升级到DB2 JDBC 12.1.0.0
  • 升级到Elasticsearch Client 8.17.2
  • 升级到Flyway 11.3.3
  • 升级到Groovy 4.0.25
  • 升级到Gson 2.12.1
  • 升级到Hamcrest 3.0
  • 升级到Hibernate 6.6.8.Final
  • 升级到HttpClient5 5.4.2
  • 升级到HttpCore5 5.3.3
  • 升级到Infinispan 15.1.5.Final
  • 升级到Json-smart 2.5.2
  • 升级到Lettuce 6.5.4.RELEASE
  • 升级到Liquibase 4.31.1

总结

在Spring-Boot v3.5.0-M2版本中,开发者将受益于一系列新特性和修复,包括自动配置的增强、对新属性的支持以及多个依赖项的升级。这些更新不仅提高了框架的灵活性和可用性,还解决了多个bug,确保开发者能够在更稳定的环境中进行开发。