【问题标题】:What is the best strategy to externalise database properties in a multi-module maven project?在多模块 Maven 项目中外部化数据库属性的最佳策略是什么?
【发布时间】:2017-03-26 11:25:12
【问题描述】:

我有一个基于多模块 maven 的项目,其中有许多 Spring Boot 应用程序,其中几个(我们称它们为 AB)连接到数据库(我有一个单独的模块与数据库两个应用程序所依赖的相关代码。)我还使用 Flyway 来维护数据库版本控制和维护数据库结构。

维护数据库属性的最佳方法是什么?目前我有 3 个地方在重复同样的事情。我有模块Aapplication.yml 和模块Bapplication.yml,因为它们都是独立的Spring Boot 应用程序。然后我再次配置 Flyway 插件,它需要 pom.xml 中的属性才能执行其任务,例如 cleanrepairmigrate

将这些信息(如数据库 URL、用户名和密码)集中和外部化的正确方法是什么?我还面临这样一个问题,每次我将新代码拉到测试系统上时,我都必须再次更新相同的数据,因为它会被覆盖,并且测试系统上的数据库配置与我的本地开发环境不同。

管理此问题的最佳策略是什么?

【问题讨论】:

    标签: database maven spring-boot flyway


    【解决方案1】:
    1. 将您的配置外部化为配置模块。当然,这取决于 Flyway / Spring Boot 使用基于类路径的属性的灵活性。

    2. 看看archaius 之类的东西,让您的配置真正外部化、集中化和动态化,例如由外部数据存储支持。这里涉及更多工作,但会给您带来额外的好处,例如能够在一个地方更改配置并让它们在任何地方运行的应用程序中动态获取。

    这不是一个容易解决的问题,而且肯定需要一些工作来让您的工具通过挂钩到它们的生命周期来进行协作。

    【讨论】:

    • 是的,似乎没有一个直截了当的答案,我真的在寻找最常用的标准方法。
    【解决方案2】:

    对于您的飞行路线,您可以使用 maven-properties-plugin。通过这种方式,您可以将凭证外部化到属性文件。描述了一个示例here

    对于 spring-boot 应用程序,我推荐spring cloud config 。使用 spring 云配置,您可以将配置外部化到 git 存储库,该存储库可以通过 Eureka 服务发现,例如喜欢here。我会考虑将模块重组为独立的微服务。一个良好的基于​​微服务架构的基础架构提供了JHipster 项目。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-08
      • 2018-01-27
      • 2015-02-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多