【问题标题】:Approaches to manage property files In production environment生产环境中管理属性文件的方法
【发布时间】:2017-12-04 08:15:41
【问题描述】:

我想了解您对管理跨项目共享的属性文件的最佳方式的看法。

假设我们有四个应用程序——Application1、Application2、Application3 和 Application4——所有的应用程序都部署在同一个盒子

考虑我们有以下属性文件

  1. File1.property -- 用于 Application1 , Application2 应用程序 3 和应用程序 4
  2. File2.property -- 用于 Application1 , Application2
  3. File3.property -- 在 Application2 Application3 中使用
  4. File4.property -- 用于 Application1 , Application4
  5. File5.property -- 用于 Application3
  6. File6.property -- 在 Application4 中使用

属性文件的数量将来可能会增加。

目前我正在考虑以下方法

方法 1 – 将所有必需的属性文件捆绑在单独的 jar 中。 缺点 - 1:属性文件在多个项目中重复 2 : 需要更多的努力来确保所有项目中的所有属性文件都同步。

方法2:在单独的项目中创建所有属性文件的单独捆绑包,将此项目部署为配置项目。
将一些环境变量指向该位置,并在 java 代码中从该位置加载属性文件。

这是个好主意吗?

【问题讨论】:

  • 您需要真正共享属性文件还是只需要适当的类可以提供的一种配置?
  • 属性文件包含有关环境、配置、路径等的信息。所有项目需要相同/一致
  • 这可以由单个 jar 文件中的类实现,该文件提供了一个适当的接口来加载属性文件...您可以简单地在不同模块之间共享配置信息...
  • 加载属性文件不是问题,所有都是 spring 基础应用程序,所以使用单行 @PropertySource 我正在加载我的所有属性。我关心我应该如何捆绑我的通用专有文件

标签: spring maven deployment properties production-environment


【解决方案1】:

从您的问题中不清楚的一点是,您提议部署的文件是否包含实际的生产属性,或者它们是否只是在部署应用程序时某些/某些内容将要更新的模板。

或者换句话说,您是否在软件开发、测试和生产之间进行了清晰的概念分离。假设你这样做了,那么你很可能会发现:

  • 每个“部署”都需要自己的一组属性,
  • 生产部署很可能需要版本控制不同于应用程序的版本控制
  • 生产配置的生命周期很可能需要与应用程序生命周期不同。

或者至少,在“开发”和“运营”是不同职责的大型组织中,通常是这样处理大型应用程序的。 (在 dev-ops 世界中,将应用程序和配置的生命周期分开是有价值的,即使“dev”和“ops”任务由同一个人执行。)

这里还有一些想法:

  • 如果要在最终用户计算机上部署应用程序,建议将属性集成到某种首选项管理框架中。
  • 在某些情况下,最好使用“.ini”文件而不是类(或 XML)Java 属性文件。

【讨论】:

  • 感谢斯蒂芬检查这个。是的,我确实有用于开发、测试和产品的单独属性。目前我正在使用报价中提到的方法 2。我正在使用 maven 创建 3 个不同的配置包(开发、测试、产品)并管理版本。每个配置包都部署在其相应的环境中。
猜你喜欢
  • 2013-06-23
  • 1970-01-01
  • 2015-08-19
  • 2013-07-29
  • 2014-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-14
相关资源
最近更新 更多