Administrator
发布于 2023-05-22 / 9945 阅读
278

Spring Boot 3.1 与 3.2 新特性盘点

背景:3.1 刚发布,3.2 在路上

五月十八号 Spring Boot 3.1 正式发布,我们组件库当天就升了。3.2 按计划十一月才来,但里程碑里已经能看出方向。趁热把两版新特性盘一遍,顺手在预发环境验证了几个最实用的。

Docker Compose 支持(3.1)

以前本地起依赖靠 testcontainers 或者手写脚本。3.1 直接内置了 Docker Compose 支持,只要在 src/main/resources 放个 compose.yaml

services:
  redis:
    image: redis:7
    ports:
      - "6379"

应用启动时自动拉起,且会自动把连接地址注入环境(比如 spring.data.redis.host),不用再手动配。本地调试体验提升明显,CI 里也省了一层容器编排。

SSL 配置(3.1)

3.1 引入了 SSL Bundle,把证书、密钥、信任库封装成可复用的配置块,多数据源、多客户端共用一套证书时不再到处复制:

spring:
  ssl:
    bundle:
      jks:
        internal:
          keystore:
            location: classpath:keystore.jks
            password: ${KEYSTORE_PWD}
  data:
    redis:
      ssl:
        bundle: internal

服务连接抽象 ConnectionDetails(3.1)

3.1 把「如何连到一个服务」抽象成 ConnectionDetails,Docker Compose、K8s Service Binding、本地配置都能统一适配。迁移到云原生环境时,应用代码不用改,只换连接信息的来源。

Observability 增强(3.1 / 3.2)

3.1 把 Micrometer Observation 推到了更核心的位置,@Observed 注解一行就能给方法织入埋点:

@Observed(name = "order.create")
public Order create(OrderReq req) { ... }

配合 management.observations.* 可以把指标、链路、日志串起来。3.2 的里程碑里提到要把这套做得更细(更完整的 ProblemDetail 集成),值得期待。

3.2 值得提前关注的点

按当前路线图,3.2(十一月)会带来:声明式 RestClient(取代 RestTemplate 的新同步客户端)、虚拟线程的自动装配(JDK 21 的特性)、以及更完整的可观测性端点。这些现在还在里程碑阶段,建议先别在主干依赖。

先到这

《Spring Boot 3.1 与 3.2 新特性盘点》这块我前前后后踩了不止一次。今天先写这些,后面想到新的再补。

参考