← 返回文章列表

Spring Boot 4.2.0-M2 发布:LDAP 接入 SSL Bundle,可观测性对齐 OpenTelemetry

Java可观测性安全

这是什么版本

Spring Boot 4.2.0-M2 于 2026 年 9 月 25 日发布,已可从 Maven Central 获取。官方给出的数字是 141 项增强、文档改进、依赖升级与缺陷修复。它是 4.2 线的第二个里程碑版,定位是让早期采用者提前验证变更,不建议直接用在生产环境。

官方单独点名的新特性有两个:LDAP 支持 SSL Bundle,以及可观测性对齐 OpenTelemetry 的语义约定。除此之外,从 4.1 升级过来还有几处需要手动处理的变更,下面按影响大小排序说明。

LDAP 全面接入 SSL Bundle

过去想让自动配置的 LdapContextSource 走 LDAPS,得自己拼一套 SSL 配置。现在可以直接指定一个 SSL Bundle:设置 spring.ldap.ssl.bundle,并把 spring.ldap.urls 写成 ldaps:// 形式。一旦配置了 bundle,该属性的默认值会变成 ldaps://localhost:636。如果只需要平台默认的信任材料,用 spring.ldap.ssl.enabled=true 就够了。

Bundle 的密钥和信任材料重载后,后续连接会自动采用,不需要重启应用。

内嵌 LDAP 服务器这边的改动更彻底:它现在也支持 LDAPS,而且命名了 spring.ldap.embedded.ssl.bundle 之后,服务端和客户端两端会同时配好,自动配置的 LdapTemplate 或 LdapContextSource 可以直接连上,不用再写客户端配置。相应地,在使用内嵌服务器期间,spring.ldap.urls、username、password、ssl.* 这些属性会被忽略,改由 spring.ldap.embedded.* 提供——因为只有服务器自己知道连它需要什么。

还有一个细节值得留意:spring.ldap.embedded.ssl.enabled 设为 true 却没有配 bundle,以前会静默启动一个明文监听,现在会直接报错要求补上 bundle。想控制哪些操作需要认证,用 spring.ldap.embedded.authentication-required-operation-types 指定。

可观测性对齐 OpenTelemetry

把 management.observations.conventions 设为 open-telemetry,即可启用 OpenTelemetry 的语义约定。需要注意的是,这里只包含已经稳定的约定,而且启用后,像 management.observations.http.server.requests.name 这类自定义指标名的属性会失效——指标名改由 OTel 约定决定。

OTLP 导出配置也做了统一:端点、请求头和压缩方式可以在 management.opentelemetry.otlp 下配一次,追踪、日志、指标三个导出器共享;各自的专属配置仍然存在,优先级更高,没配的才回落到公共值。端点在 HTTP 传输下会自动补上 /v1/traces、/v1/logs、/v1/metrics 路径。

另外,Micrometer Tracing 写入 MDC 的 trace 和 span key 现在可以改:management.tracing.mdc.trace-id-key 与 management.tracing.mdc.span-id-key,默认仍是 traceId 和 spanId,对 OpenTelemetry 和 Brave 都生效。

从 4.1 升级要处理的四处变更

  • Tomcat 属性搬家:server.tomcat.additional-tld-skip-patterns、redirect-context-root、use-relative-redirects 移到了 server.tomcat.servlet.* 之下。其中 use-relative-redirects 的默认值改为 true,以对齐 Tomcat 自身默认;要保留旧行为需显式设 false。
  • Janino 依赖管理被移除:起因是 Logback 放弃了对 Janino 的支持。如果你的应用还在用 Janino,需要在构建里自行管理版本。
  • Micrometer 约定拆分改名:JvmMemoryMeterConventions、JvmThreadMeterConventions、JvmClassLoadingMeterConventions、JvmCpuMeterConventions 都被拆成更细的单个约定,新旧同时存在会直接启动失败。另外 management.metrics.observations.ignored-meters 被移除,LongTaskTimer 不再默认创建,需要的话把 management.metrics.observations.include-active-long-task-timer 设为 true。
  • 内嵌 LDAP 的 SSL 要求:就是上面提到的那条,开了 SSL 就得给 bundle。

其他值得一提

@DefaultValue 现在支持属性占位符,默认值里的占位符会在绑定过程中一并解析。Kafka 自动配置可以为 KafkaTemplate 和监听容器各自配一个专用 KafkaAdmin,命名空间分别是 spring.kafka.template.admin 和 spring.kafka.listener.admin。自定义 MessageSource 时,现在会自动配置一个 ResourceBasedMessageSourceConfigurer 帮你套用 spring.messages.*。tools 的 jar 模式新增了 sbom 命令,可以打印和导出打进 uber jar / war 里的 SBOM。

依赖方面,Spring Framework 跟到了 7.1.0-M2,Spring Data 2026.1.0-M2、Spring Batch 6.1.0-M2、Spring Integration 7.2.0-M2、Spring Kafka 4.2.0-M2 等一并跟进;第三方里 Kotlin 2.4.20、Groovy 5.1.2、Lettuce 7.7.0、MongoDB 5.11.1、Selenium 4.49.0 都升了版本。

该怎么对待这个版本

里程碑版的意义在于提前暴露变更。真正值得现在做的,是在独立分支上验证两件事:一是 LDAP 相关配置是否还符合预期,尤其是同时用了内嵌服务器和生产配置的测试;二是如果计划切到 OpenTelemetry 语义约定,指标名的变化会不会影响到现有的看板和告警。其余变更等到 RC 和 GA 再处理也不迟。