微服务依赖链很长,某个传递依赖出安全问题时,如果每个模块各管各的版本,修复会非常慢。项目把关键版本集中在父 POM,并用 BOM 管理框架族。
一、三层版本管理
Spring Boot Parent
Spring Cloud BOM
Spring Cloud Alibaba BOM
业务模块基本不写版本号,避免和框架兼容矩阵脱节。
二、关键依赖显式覆盖
父 POM 集中维护:
Jackson 2 / Jackson 3
Netty
HttpCore5 / HttpClient5
Log4j2 API
Bouncy Castle
这些库常见且传递面广,出问题时必须能一处升级、全工程生效。
三、版本不是越新越好
升级要区分安全修复和功能版本。安全修复优先,功能升级要看兼容性测试。特别是 Jackson、Netty 这类底层库,序列化格式和网络行为都可能影响链路。
四、自动 PR 只是入口
Dependabot 能提示版本,但合并前仍要确认:
- 是否包含安全修复。
- 是否兼容 Java 21 和当前 Boot 版本。
- 测试是否完整通过。
- 是否需要同步覆盖多个相关依赖。
五、经验总结
版本治理的目标是可控升级。集中声明、少量覆盖、定期更新,比临时到处改版本稳得多。