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

我正在使用微服务架构创建一个应用程序。我想知道我们是否可以在所有微服务中管理相同的 Spring Boot 版本。我只是不想在创建新微服务时在 pom.xml 中提及 Spring Boot 版本。如果我们可以在一个位置管理 Spring Boot 版本,那么它将确保所有微服务都使用相同的 Spring Boot 版本,并且很容易为所有微服务升级它。

如果可以,如何管理?

这是一个好习惯吗?



梵蒂冈之花
浏览 166回答 5
5回答

慕少森

如果您真的想这样做,您可以使用Maven构建您的单独应用程序(微服务),使用父 POM 和 Maven 的依赖管理功能(依赖管理与 Depdencies 不同)来控制使用哪个版本的 Spring Boot。但是,您不应该严格要求所有微服务都使用相同版本的 Spring Boot。如果你这样做了,并且其中一个微服务必须使用更新版本的 Spring Boot(例如,因为它有一个关键的新特性),那么你就是在强制所有微服务同时更新。微服务的主要优势之一是每个微服务都可以单独构建、更新和部署升级,因此您将剥夺您的系统的这种优势。但是,如果做得好,这可以为您带来两全其美的效果。旧的微服务可以继续使用旧版本的父 POM。新的和更新的微服务可以使用新版本的父 POM。很容易看出微服务是否使用(非常)旧版本的父 POM,因此应该更新。父 POM 的当前版本可以指示您认为使用哪些版本的依赖项是“最佳实践”。但是,不要试图使用多模块 Maven 结构,因为那样会强制微服务使用相同的 Spring Boot 版本,这会在每个微服务的构建中引入过多的耦合。

天涯尽头无女友

虽然“独立性”确实是微服务环境中的一个重要价值,但这并不意味着猖獗的代码重复是首选。选择两害相权取其轻,创建一个仅包含 pom 文件(无 java 代码)的父项目,并让所有微服务使用这个 pom 作为其父 pom。在这个父 pom 文件中,您可以使用标签声明所有依赖项的<dependencyManagement>所有版本以及使用标签声明插件的所有版本<pluginManagement>。这些标签实际上并没有向您的实际项目添加任何依赖项或插件,它只是声明了项目过于依赖它们时要使用的版本。如果你已经在使用 spring-boot-starter pom 作为你的父级,这可以传递:你的微服务有你的父级 pom,你的父级 pom 有 spring boot starter pom 作为它自己的父级。如果在未来某个时候,一个微服务需要从这个父 pom 中分离出一个或多个特定依赖项,您可以在该项目的 pom 中声明新版本,而这些值将被使用,有效地覆盖父 pom 中声明的内容( s),因此您不会失去这种灵活性。然而,我们已经使用 Spring Boot 微服务两年了,同时保持环境一致和易于升级已证明对我们来说比独立更有价值。

沧海一幻觉

如果可以,如何管理?使用 Maven/Gradle 父 pom 定义微服务项目将继承的所有版本和依赖项。这是一个好习惯吗?是的,有一定的衡量标准。这是个好主意,因为通过您开发/维护的一组项目使用一致的依赖版本是个好主意。但这并不意味着所有项目都会在 N 时刻使用相同版本的父 pom,但理想情况下,它们应该倾向于使用最新版本,就像你的父 pom 的最后一个版本一样使用 Spring Boot 的最后一个稳定版本。

DIEA

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

宝慕林4294392

作为一种选择,如果您使用私有 Maven 存储库,您可以为您使用的所有 Spring 库安装一个版本的工件(甚至更多,您可以将它们全部标记为自定义版本)。然后在您的所有项目中,只需在依赖项中使用此标记即可。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java