为了账号安全,请及时绑定邮箱和手机立即绑定

如何在所有微服务中维护相同的 Spring Boot 版本?

如何在所有微服务中维护相同的 Spring Boot 版本?

梵蒂冈之花 2022-11-02 10:05:09
我正在使用微服务架构创建一个应用程序。我想知道我们是否可以在所有微服务中管理相同的 Spring Boot 版本。我只是不想在创建新微服务时在 pom.xml 中提及 Spring Boot 版本。如果我们可以在一个位置管理 Spring Boot 版本,那么它将确保所有微服务都使用相同的 Spring Boot 版本,并且很容易为所有微服务升级它。如果可以,如何管理?这是一个好习惯吗?
查看完整描述

5 回答

?
慕少森

TA贡献2019条经验 获得超9个赞

如果您真的想这样做,您可以使用Maven构建您的单独应用程序(微服务),使用父 POM 和 Maven 的依赖管理功能(依赖管理与 Depdencies 不同)来控制使用哪个版本的 Spring Boot。

但是,您不应该严格要求所有微服务都使用相同版本的 Spring Boot。如果你这样做了,并且其中一个微服务必须使用更新版本的 Spring Boot(例如,因为它有一个关键的新特性),那么你就是在强制所有微服务同时更新。微服务的主要优势之一是每个微服务都可以单独构建、更新和部署升级,因此您将剥夺您的系统的这种优势。

但是,如果做得好,这可以为您带来两全其美的效果。

  • 旧的微服务可以继续使用旧版本的父 POM。

  • 新的和更新的微服务可以使用新版本的父 POM。

  • 很容易看出微服务是否使用(非常)旧版本的父 POM,因此应该更新。

  • 父 POM 的当前版本可以指示您认为使用哪些版本的依赖项是“最佳实践”。

但是,不要试图使用多模块 Maven 结构,因为那样会强制微服务使用相同的 Spring Boot 版本,这会在每个微服务的构建中引入过多的耦合。


查看完整回答
反对 回复 2022-11-02
?
天涯尽头无女友

TA贡献1831条经验 获得超9个赞

虽然“独立性”确实是微服务环境中的一个重要价值,但这并不意味着猖獗的代码重复是首选。选择两害相权取其轻,创建一个仅包含 pom 文件(无 java 代码)的父项目,并让所有微服务使用这个 pom 作为其父 pom。在这个父 pom 文件中,您可以使用标签声明所有依赖项的<dependencyManagement>所有版本以及使用标签声明插件的所有版本<pluginManagement>。这些标签实际上并没有向您的实际项目添加任何依赖项或插件,它只是声明了项目过于依赖它们时要使用的版本。

如果你已经在使用 spring-boot-starter pom 作为你的父级,这可以传递:你的微服务有你的父级 pom,你的父级 pom 有 spring boot starter pom 作为它自己的父级。

如果在未来某个时候,一个微服务需要从这个父 pom 中分离出一个或多个特定依赖项,您可以在该项目的 pom 中声明新版本,而这些值将被使用,有效地覆盖父 pom 中声明的内容( s),因此您不会失去这种灵活性。

然而,我们已经使用 Spring Boot 微服务两年了,同时保持环境一致和易于升级已证明对我们来说比独立更有价值。


查看完整回答
反对 回复 2022-11-02
?
沧海一幻觉

TA贡献1824条经验 获得超5个赞

如果可以,如何管理?

使用 Maven/Gradle 父 pom 定义微服务项目将继承的所有版本和依赖项。

这是一个好习惯吗?

是的,有一定的衡量标准。
这是个好主意,因为通过您开发/维护的一组项目使用一致的依赖版本是个好主意。
但这并不意味着所有项目都会在 N 时刻使用相同版本的父 pom,但理想情况下,它们应该倾向于使用最新版本,就像你的父 pom 的最后一个版本一样使用 Spring Boot 的最后一个稳定版本。


查看完整回答
反对 回复 2022-11-02
?
DIEA

TA贡献1820条经验 获得超2个赞

对于每个微服务,它们应该有自己的版本。每个微服务都应该有自己的升级周期。如果您最终创建了一个检测 Spring Boot 版本的通用项目。不同的微服务无法继续利用 Spring 中的新功能以及其他可能依赖于特定 Spring 版本的框架



查看完整回答
反对 回复 2022-11-02
?
宝慕林4294392

TA贡献2021条经验 获得超8个赞

作为一种选择,如果您使用私有 Maven 存储库,您可以为您使用的所有 Spring 库安装一个版本的工件(甚至更多,您可以将它们全部标记为自定义版本)。然后在您的所有项目中,只需在依赖项中使用此标记即可。



查看完整回答
反对 回复 2022-11-02
  • 5 回答
  • 0 关注
  • 126 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信