ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

SpringBoot3.4来了,这五个新特性真香

SpringBoot3.4来了,这五个新特性真香 Spring Boot 3.4 在 2024 年 11 月正式发布基于 Spring Framework 6.2最低要求 Java 17。我花了一个周末把公司项目从 3.3 升上来踩了几个小坑但也收获了五个让人眼前一亮的改动。结构化日志终于不用自己配 Logback 了以前想让日志输出 JSON 格式得手动配置 logstash-logback-encoder写一堆 XML。Spring Boot 3.4 直接内置了结构化日志支持 ECS、GELF 和 Logstash 三种格式。在配置文件里加一行就够了properties复制下载logging.structured.format.consoleecs输出立刻变成机器可读的 JSON字段包含时间戳、日志级别、线程名、类名、应用名MDC 里的内容也会自动嵌入。如果你的日志采集用的是 ELK 或 Grafana Loki这一步就能省掉之前所有的自定义配置。优雅关闭默认开启发版不再丢请求之前每次上线运维都得手动加server.shutdowngraceful否则重启时正在处理的请求直接被掐断用户看到 502。Spring Boot 3.4 把这个选项改成了默认开启。容器编排器发送 SIGTERM 后应用会先拒绝新请求等正在进行的请求处理完再退出默认等待 30 秒可以通过spring.lifecycle.timeout-per-shutdown-phase调整。对 Tomcat、Jetty、Undertow、Reactor Netty 全部生效。如果你的场景确实需要立即关闭把server.shutdown设回immediate就行。虚拟线程支持扩展Undertow 和 Micrometer 也能用了Spring Boot 3.2 就开始支持虚拟线程但覆盖范围有限。3.4 把虚拟线程的支持扩展到了 Undertow 和MicrometerOtlpMeterRegistry。开启方式还是那个熟悉的配置properties复制下载spring.threads.virtual.enabledtrue开启后每个 HTTP 请求跑在独立的虚拟线程上阻塞 I/O 时自动释放底层操作系统线程万级并发连接不再需要堆线程池。不过要注意虚拟线程不等于“什么都变快”CPU 密集型的任务并不会因此受益选对场景才是关键。Actuator 新增 SSL 证书监控证书过期不再靠人记证书过期是那种“平时没人管出事就是 P0”的问题。Spring Boot 3.4 在 Actuator 里加了 SSL 信息端点和健康检查。/actuator/info会展示证书的有效期、颁发者、主题还会标记即将过期的证书。健康检查则会在证书无效时报告OUT_OF_SERVICE。过期预警阈值可以通过management.health.ssl.certificate-validity-warning-threshold配置。如果你的证书是自动轮换的这个功能就是一道额外的保险。MockMvcTester测试代码终于像人写的了写 Controller 测试最烦的就是andExpect()那一长串链式调用断言语义也不直观。Spring Boot 3.4 引入了MockMvcTester底层基于 AssertJ只要类路径里有 AssertJAutoConfigureMockMvc就会自动配置它。写法从java复制下载mockMvc.perform(get(/api/users)) .andExpect(status().isOk()) .andExpect(jsonPath($.name).value(Alice));变成了更接近自然语言的断言风格可读性提升明显。如果你的测试代码里全是.andExpect()值得花半小时迁移过来。升级建议从 3.3 升到 3.4 整体平滑。注意两件事一是如果之前手动配了logstash-logback-encoder升级后可以移除避免冲突二是优雅关闭默认开启后如果你的部署流程依赖“秒级重启”可能需要把超时时间调短一些。这五个特性里结构化日志和优雅关闭是“零成本收益”——改一行配置就能用。虚拟线程需要你确认自己的场景适合。Actuator SSL 监控和 MockMvcTester 则是锦上添花。如果你还在 3.2 或 3.33.4 值得升。
返回列表