Spring Boot 3.4 正式发布,王炸级更新!

打印 上一主题 下一主题

主题 908|帖子 908|积分 2724

各人好,我是R哥。
最新消息,Spring Boot 一次性发布了 6 个版本:

  • 3.4.0
  • 3.3.6
  • 3.2.12
  • 3.1.14
  • 3.0.18
  • 2.7.23
Spring Boot 3.4 正式发布了,3.2.x 在前几天也停止维护了,很神奇的是,3.1.x 及以下的停更版本居然也发布 bug 更新包了。
最新的支持版本如下:

从路线图可以看到每个版本的终止时间,每个版本的生命周期只有一年。
Spring Boot 进入了全新的 3.3+ 期间了,3.2.x 及之前的版本也都停止维护了,商业支持的版本也只有 2.7+ 了,2.6.x 以下的版本彻底退出汗青舞台,技能变革太快了。。
Spring Boot 3.4.0 新特性

1、最低环境要求

Spring Boot 3.0.0 开始支持并最低要求 Java 17,现在的新版本也陆续开始支持 Java 21 ~ 23 了。
对 Java 开发环境的要求对比表:
Spring BootJDKSpringMavenGradle3.4.016 ~ 236.2.0+3.6.3+7.6.4+,8.4+3.3.017 ~ 226.1.8+3.6.3+7.5+,8.x3.2.017 ~ 216.1.1+3.6.3+7.5+,8.x3.1.017 ~ 206.0.9+3.6.3+7.5+,8.x3.0.017 ~ 196.0.2+3.5+7.5+2.7.128 ~ 205.3.27+3.5+6.8.x, 6.9.x, 7.x, 8.x支持 Java 8 的最后一个 Spring Boot 2.x 系列版本已经退伍啦,Java 17 的新期间到来。
如果你还停顿在 Java 8 就 OUT 了,过去一两年,Java 8 接纳率腰斩,Java 17 暴涨 430%!!
R哥制作的《Java 新特性实战课》都可以报名学起来,好课不贵,199 元永世学习,如后续出了 Java 21 及更多版本新内容都能免费更新。
2、布局化日记

什么是布局化日记?

一般的日记都是 “非布局” 化的,也就是一段没有任何 “布局” 的日记文本字符串,比如我们在系统中常见的日记信息:
  1. 2024-11-25 10:41:05:347 INFO ...
复制代码
固然包含了所有关键的信息,但是想要提取其中的特定信息就非常困难,需要剖析和搜索这段字符串。
而布局化日记则是一段有明确定义的布局的字符串,可读性好,通用是 JSON 格式,如以下日记:
  1. {
  2.     "timestamp": "2024-11-25 10:41:05:347",
  3.     "level": "INFO",
  4.         ...
  5. }
复制代码
如许获取日记信息是不是方便多了?
Spring Boot 中的布局化日记

Spring Boot 3.4 支持布局化日记记录,并支持以下开箱即用的 JSON 格式:

  • Elastic Common Schema (ecs)
  • Graylog Extended Log Format (gelf)
  • Logstash(logstash
启用布局化日记记录设置:
参数说明logging.structured.format.console用于控制台输出logging.structured.format.file用于文件输出设置示例:
  1. logging:
  2.   structured:
  3.     format:
  4.       console: ecs
  5.       file: ecs
复制代码
布局化日记设置支持上面所说的 ecs、gelf、logstash 日记。
推荐看看我写的更多 Spring Boot 教程:https://www.javastack.cn/spring/spring-boot/
3、定义附加的 Bean

Spring Boot 3.4 开始,当范例匹配时,基于 Bean 的条件如今将忽略任何不是默认候选者的 Bean。
通过声明 bean 不是默认候选者,如:
  1. @Bean(defaultCandidate = false)
  2. public class Xxx {
  3.    
  4. }
复制代码
然后在定义自动设置范例的 bean 时,如果存在相同范例的 bean,它就会被忽略,从而不会导致自动设置的 bean 注册失败
比如在同一个应用程序中要使用两个数据源 Bean,或者其他两个相同范例的 Bean 时,如许就特殊有用,还能简化设置。
Spring Boot 最新最全的实战代码已上传 Github:
https://github.com/javastacks/spring-boot-best-practice
4、扩展假造线程

Spring Boot 3.4 开始,如果启用了假造线程,以下组件将使用假造线程:

  • OtlpMeterRegistry
  • Undertow web server
另外,通过 Spring Integration 集成的使命调度器(TaskScheduler)如今也是假造线程感知的,即使在 @EnableScheduling 在没有开启的状态下。
5、Docker Compose 和 Testcontainers 改进

Docker Compose 如今支持多个 Docker Compose 设置文件,并且添加了几个新的命令行参数:

  • spring.docker.compose.start.arguments 和 spring.docker.compose.stop.arguments 参数可用于指定在启动和停止服务时传递给 Docker Compose 子命令的其他命令行参数。
  • spring.docker.compose.arguments 参数支持传递参数给 Docker Compose。
另外,Testcontainers 测试容器也得到了各种改进,比如添加了对 org.testcontainers.kafka.KafkaContainer 、Redis Stack 和 Redis Stack Server 的支持。
6、Actuator 增强

可插拔的 Actuator 暴露器

Spring Boot 3.4 支持扩展 Spring Boot 以可插拔的方式公开 Actuator 端点,并且添加了一个 EndpointExposureOutcomeContributor 接口,它会影响到 @ConditionalOnAvailableEndpoint 注解的条件控制。
此扩展可以更轻松地提供类似于我们现有的 Cloud Foundry 支持的其他平台集成。
SSL信息和健康检查

如果你使用了 SSL bundles,如今在 /actuator/info 下添加了一个新端点,用来显示 SSL 信息,比如证书有用期、颁发者、主题等。
这个端点还能显示即将逾期的证书,如许就能提醒我们不定期更新证书,它还提供了一个提醒阈值设置参数:
management.health.ssl.certificate-validity-warning-threshold
另外,它还添加了监控 SSL 证书的健康检查,如果证书无效,则会将状态设置为中断服务(OUT_OF_SERVICE)。
计划使命端点显示更多信息

计划使命 /actuator/scheduledtask 端点如今添加了更多关于计划使命的元数据信息,比如:下一次计划执行时间、上次执行时间、状态和异常等。
7、镜像构建改进

Spring Boot 如今默认使用的是 paketobuildpacks/builder-jammy-java-tiny,该构建器支持 ARM 和 x64 平台开箱即用。
在 Maven 和 Gradle 插件中添加了一个用于构建 OCI 映像的 trustBuilder 选项,它控制了 CNB 生命周期的调用方式,从而在使用来自不受信托来源的构建器时提供更高的安全性。
默认环境下,来自 Paketo、Heroku 和 Google 的构建器是受信托的。
在 Maven 和 Gradle 插件中还添加了一个用于构建 OCI 映像的 imagePlatform 选项,此选项可用于指定为运行 CNB 构建包而拉取的任何 CNB 构建器、运行和构建包映像的操纵系统和体系布局。
8、MockMvcTester 自动设置

支持当 AssertJ 在类路径下时自动设置 MockMvcTester,有了 MockMvcTester,我们就能使用流式 API 定义请求和断言。
MockMvcTester 也是 MockMvc 的替代方案,它可以代替 MockMvc 所能使用到的任何场景。
9、RestClient 和 RestTemplate

RestClient 和 RestTemplate 的自动设置,添加了对 Netty 响应式的 HttpClient HTTP 客户端和 JDK 的 HttpClient HTTP 客户端的支持。
按照优先顺序分别是:

  • Apache HTTP Components (HttpComponentsClientHttpRequestFactory)
  • Jetty Client (JettyClientHttpRequestFactory)
  • Reactor Netty HttpClient (ReactorClientHttpRequestFactory)
  • JDK HttpClient (JdkClientHttpRequestFactory)
  • Simple JDK HttpURLConnection (SimpleClientHttpRequestFactory)
需要注意的是,如果在类路径上没有HTTP客户端库,这大概会导致使用 JdkClientHttpRequestFactory,而以前使用的是 SimpleClientHttpRequestFactory。
可以通过设置 spring.http.client.factory 参数来选择特定的 HTTP 客户端,支持的值有:http-components、jetty、reactor、jdk 和 simple。
10、优雅关机

Spring Boot 3.4 开始,如今默认启用嵌入式 Web 服务器的优雅关机,包括:Jetty、Rector Netty、Tomcat 和 Undertow
如果需要恢复之前的默认行为,可以设置以下参数:
  1. server.shutdown: immediate
复制代码
11、更多

1)Spring Boot 不再依赖 OkHttp,OkHttp 的依赖也被移除了。
2)Apache HTTP 组件已更改 HttpClient 中与 HTTP/1.1 TLS 升级相关的默认值。
3)设置属性的 Bean 验证有变动,如果要验证级联到嵌套属性,则根据需要添加 @Valid 注解。
4)当在 @Bean 方法上使用 @ConditionalOnBean 和 @ConditionalOnMissingBean 并设置 annotation 属性时, @ConditionalOnBean 和 @ConditionalOnMissingBean 的行为已更改。
5)大量 Spring 库和第三方类库都得到了更新,另有一些废除项。
总结

Spring Boot 3.4 这个版本的变化还挺大的,增长了不少实用功能,很多功能也都得到了增强,做技能的真要时刻保持对新技能的渴望啊,不然都跟不上期间的步调了。
话说你们如今用的什么版本呢?
Spring Boot 最新最全的实战代码已上传 Github:
https://github.com/javastacks/spring-boot-best-practice
如果你还没用过 Spring Boot,这里推荐下我的《Spring Boot 核心技能课》,16 个模块,几乎涉及所有核心技能,包括底层实现原理及代码实战,知识点非常齐全,助你快速买通 Spring Boot 的各个环节。
等更新到 Spring Boot 3.5+,本课程会涨价到 499 元,早订阅,早学习,早受益。
好了,今天的分享就到这里了,后续R哥也会继承关注并分享更多的 Spring Boot 资讯和干货,关注公众号Java技能栈第一时间推送。
版权声明: 本文系公众号 "Java技能栈" 原创,转载、引用本文内容请注明出处,抄袭、洗稿同等投诉侵权,后果自负,并保存追究其法律责任的权利。
更多文章推荐:
1.Spring Boot 3.x 教程,太全了!
2.2,000+ 道 Java面试题及答案整理(2024最新版)
3.免费获取 IDEA 激活码的 7 种方式(2024最新版)
觉得不错,别忘了随手点赞+转发哦!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

自由的羽毛

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表