管理配置数据的最佳方式是什么

我正在开发一个产品套件,其中包含4种产品。现在,所有配置数据都位于 XML 或属性文件中。这种方法是不可维护的,因为我们必须为不同的环境(例如生产,开发等)管理不同的配置文件。

那么,处理配置数据的最佳方法是什么?

另外,我们可以将其模块化为一个单独的模块吗?使所有产品都可以使用此模块。我们不想使用属性文件。我正在寻找一种解决方案,在该解决方案中,我们可以将所有特定于配置的代码作为新的配置模块移动,并将所有配置数据保留在数据库中。


答案 1

使用 commons-configuration,你有一个统一的 API 来访问属性,无论它们是如何表示的 - .properties、xml、JNDI 等。例如:

config.properties:

jdbcHost=192.168.12.35
jdbcUsername=dbuser
jdbcPassword=pass

config.xml:

<config>
   <jdbcHost>192.168.12.35</jdbcHost>
   <jdbcUsername>dbuser</jdbcUsername>
   <jdbcPassword>pass</jdbcPassword>
</config>

在这两种情况下,都可以通过以下方式访问它们:

String host = config.getString("jdbcHost");

答案 2

你快到了...我会保留您的相同方法,并为通过类似于以下任一方法的应用程序实例拉入正确的配置文件:

  1. 以不同的方式命名所有配置文件,并让应用程序通过一些唯一的条件(用户名、主机名等)将它们拉入:

    • 生产.属性
    • 开发者1.属性
    • 开发者2.属性
  2. 将它们保留在代码库之外,位于基于应用程序假定存在的环境变量的位置:

    • YOURAPP_CONFIG_DIR/server_config.xml
    • YOURAPP_CONFIG_DIR/database_config.属性

我甚至在同一个项目上使用了这些方法的组合(#1用于构建过程配置,#2用于运行时配置)。


推荐