【问题标题】:What should be the strategy to migrate configuration files to new version?将配置文件迁移到新版本的策略应该是什么?
【发布时间】:2014-02-19 13:51:22
【问题描述】:

我知道这个问题完全依赖于实现,但想知道用于迁移配置文件的一般策略。

我们有一个产品可以从属性/XML 文件中读取一些配置。在属性文件中配置了一些默认值。客户可以根据自己的需要更改属性。现在假设我们在文件中更改/添加一些属性并且客户迁移到更新的版本。我们应该如何将客户特定的配置与新添加/更新的属性合并?一种方法是编写一个实用程序来合并文件,但不想为每个版本都这样做。

提前致谢

【问题讨论】:

  • 我个人的做法是将配置的副本临时存储/同步到数据库中,然后在部署新版本时填充新调整/更改的配置。
  • @sidgate 对我来说,更改应用程序读取的道具就像更改 api,没有简单的方法来处理这个问题。我会为此编写一个简单的实用程序,但这太依赖于应用程序的类型以及道具实际更改/引入的内容..

标签: java apache-commons-config


【解决方案1】:

我们有一个配置继承架构。在开发过程中,我们有:

BaseSetup <- Setup <- DevelopmentSetup <-- StagingSystemSetup
                                        |- DeveloperMikeSetup
                                        |- DeveloperSusySetup

因此演示服务器使用从通用 DevelopmentSetup 等继承的设置 StagingSystemSetup 运行。此外,每个开发人员都有自己的配置/设置,也已签入。这意味着每个人都可以根据需要更改其配置,而不会干扰其他人.

在生产/客户中,仅使用该设置,无需专门设置,但这是客户提供的设置,它继承自基本设置。

如果我们引入并启用一项新功能,我们只需要修改基本设置。理想情况下,不应发生客户强制更改设置的情况。

【讨论】:

  • 这看起来很有用。我需要检查 commons-config 是否提供了维护继承的方法,以及我们是否可以合并它们。
  • 我期待有更多的选择,但看起来这是最好的选择。
【解决方案2】:

我会说这都是文档。我不会打扰迁移工具。你肯定有你的软件的文档。在该文档中包含配置更改。您的客户有责任阅读更改日志并应用这些配置更改。如果缺少的新配置是必不可少的并且没有合理的默认值,则错误消息应该清楚地指出客户缺少的配置。如果缺少的配置具有默认值,则日志中的警告可能会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-24
    • 2016-11-27
    • 1970-01-01
    • 2019-11-13
    • 1970-01-01
    • 2011-05-29
    • 2017-04-21
    • 1970-01-01
    相关资源
    最近更新 更多