跳转至

Spring-Boot v3.4.0

为什么要使用Spring-Boot

在当今快速发展的软件开发环境中,开发者面临着越来越多的挑战。传统的Java开发方式往往需要繁琐的配置和大量的样板代码,这不仅消耗了开发者的时间,还增加了出错的可能性。此时,Spring-Boot的出现就像一缕阳光,照亮了开发者的道路。它通过简化配置、自动化设置和提供开箱即用的功能,帮助开发者快速构建和部署应用程序。然而,正是这种便利性与灵活性之间的矛盾,使得开发者在选择框架时不得不深思熟虑。使用Spring-Boot,开发者不仅能提高工作效率,还能在复杂的项目中保持代码的整洁与可维护性。

Spring-Boot是什么

Spring-Boot是一个开源的Java框架,旨在简化Spring应用程序的开发过程。它通过提供一系列的默认配置和开箱即用的功能,使得开发者能够快速构建独立的、生产级的Spring应用程序。Spring-Boot的核心理念是“约定优于配置”,这意味着开发者可以专注于业务逻辑,而不必花费过多时间在配置上。

入门示例

想象一下,你是一名初创公司的开发者,正在为一款新应用构建后端服务。使用Spring-Boot,你可以通过简单的命令行指令快速启动一个新的项目。比如,你只需运行spring init --dependencies=web myapp,就能创建一个包含Web依赖的基础项目。接下来,你可以在@RestController中定义API端点,轻松实现数据的增删改查。最终,你的应用可以在几分钟内启动并运行,极大地提升了开发效率。

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

Spring-Boot v3.4.0版本带来了多项重要更新,包括新增HttpComponentsClientHttpRequestFactoryBuilder的withDefaultRequestConfigCustomizer方法、JsonWriter在检测到重复名称时将失败、支持GraphQL的超时属性、提升ConfigurationPropertiesBinder的性能,以及移除部分不必要的依赖。这些更新旨在增强框架的性能和可用性,使开发者能够更高效地构建应用。

更新日志

⭐ 新特性

  • 向HttpComponentsClientHttpRequestFactoryBuilder添加withDefaultRequestConfigCustomizer方法
  • 如果检测到重复名称,则JsonWriter将失败
  • 添加JsonObjectDeserializer.nullSafeValue方法,接受一个mapper函数
  • 支持GraphQL的超时属性
  • 通过在首次访问时存储绑定处理程序来提高ConfigurationPropertiesBinder的性能
  • 提高ConcurrentReferenceCachingMetadataReaderFactory的性能
  • 如果未配置池挂起,则在HikariCheckpointRestoreLifecycle中记录警告
  • 从spring-boot-starter-data-jpa和spring-boot-starter-integration中移除spring-boot-starter-aop依赖

🐞 Bug修复

  • Jersey的主体处理与Spring Webflux和Spring MVC不一致
  • 类意外命名为“结构日志”而不是“结构化日志”
  • StructuredLoggingJsonProperties自定义器应为类引用而不是字符串
  • 当提供'docker.io/paketobuildpacks/new-relic'作为构建包时,无法打包OCI镜像
  • 在additional-spring-configuration-metadata.json中定义的'management.endpoints.access.default'的类型不正确
  • 使用没有扩展名的portfile时,WebServerPortFileWriter失败
  • SslOptions.isSpecified()仅在设置了密码和启用协议时返回true
  • 使用SslBundle和SslStoreBundle.NONE时,SslHealthIndicator抛出NullPointerException
  • JdkClientHttpRequestFactoryBuilder和JettyClientHttpRequestFactoryBuilder未设置密码或启用协议
  • 从归档加载图像时,错误的根本原因被隐藏
  • 当路径包含非ASCII字符时,mvn spring-boot:run在Windows上失败,提示“找不到或无法加载主类”
  • 输出FactoryBean的@SpyBean未重置
  • Logback日志系统不处理路径不以.xml结尾的URL
  • 在确定Bean是否为候选者时,基于Bean的条件未正确考虑工厂Bean
  • 在设置DOCKER_CONTEXT=default时,bootBuildImage中的NPE
  • 由于重复的MockResolver扩展而产生警告
  • 在Windows上使用Gradle或Maven的构建包时抛出HttpHostConnectException
  • build-info不支持来自project.build.outputTimestamp的自1970年1月1日以来的秒数
  • 在线程中断后,OnClassCondition.resolveOutcomesThreaded中的NPE,因为firstHalf为null
  • 默认的WebSocketMessageBrokerConfigurer始终覆盖自定义通道执行器
  • 发送到Docker Engine API的X-Registry-Auth头包含字段“authHeader”
  • ApplicationContextRunner在重复的自动配置类名时表现不一致

📔 文档

  • 将类引用迁移到完整的javadoc链接
  • 'spring.datasource.type'的文档具有误导性
  • 更新“从哪个版本升级”部分以使用“2.x”
  • 在API文档中包含spring-boot-loader
  • 记录如何以及在哪里添加自定义GraalVM配置文件
  • 重新整理DataSource配置示例,以分开定义额外的DataSource和定义不同类型的DataSource
  • Maven插件示例中层次结构模式的位置不正确
  • 链接到Eclipse设置说明
  • 修复链接到Checkpoint和Restore状态页面

🔨 依赖升级

  • 升级到ActiveMQ 6.1.4
  • 升级到Byte Buddy 1.15.10
  • 升级到Couchbase Client 3.7.5
  • 升级到Elasticsearch Client 8.15.4
  • 升级到Flyway 10.20.1
  • 升级到Groovy 4.0.24
  • 升级到Hibernate 6.6.2.Final
  • 升级到HttpClient5 5.4.1
  • 升级到Infinispan 15.0.11.Final
  • 升级到Jackson Bom 2.18.1
  • 升级到Jetty 12.0.15
  • 升级到jOOQ 3.19.15
  • 升级到Kafka 3.8.1
  • 升级到Lettuce 6.4.1.RELEASE
  • 升级到Logback 1.5.12
  • 升级到Lombok 1.18.36
  • 升级到Maven Dependency Plugin 3.8.1
  • 升级到Maven Failsafe Plugin 3.5.2
  • 升级到Maven Surefire Plugin 3.5.2
  • 升级到Micrometer 1.14.1
  • 升级到Micrometer Tracing 1.4.0
  • 升级到MongoDB 5.2.1
  • 升级到Netty 4.1.115.Final
  • 升级到Prometheus Client 1.3.3
  • 升级到Pulsar Reactive 0.5.9
  • 升级到Reactor Bom 2024.0.0
  • 升级到Spring AMQP 3.2.0
  • 升级到Spring Authorization Server 1.4.0
  • 升级到Spring Batch 5.2.0
  • 升级到Spring Data Bom 2024.1.0
  • 升级到Spring Framework 6.2.0
  • 升级到Spring HATEOAS 2.4.0
  • 升级到Spring Integration 6.4.0
  • 升级到Spring Kafka 3.3.0
  • 升级到Spring LDAP 3.2.8
  • 升级到Spring Pulsar 1.2.0
  • 升级到Spring RESTDocs 3.0.3
  • 升级到Spring Security 6.4.1
  • 升级到Spring Session 3.4.0

总结

在Spring-Boot v3.4.0版本中,新增了一些重要特性和性能提升,同时修复了多个bug,确保了更好的用户体验。此外,多个依赖项也得到了升级,以保持与最新技术的兼容性。这些更新将进一步增强开发者的工作效率和应用的稳定性。