She*_*har 28 java modularity configuration-management
我正在开发一个有4个产品的产品套件.现在,所有配置数据都在XML或属性文件中.这种方法是不可维护的,因为我们必须管理不同环境的不同配置文件(例如生产,开发等).
那么,处理配置数据的最佳方法是什么?
另外,我们可以将其模块化为一个单独的模块吗?这样所有产品都可以使用这个模块.我们不想使用属性文件.我正在寻找一种解决方案,我们可以将所有配置特定代码作为新的配置模块移动,并将所有配置数据保存在数据库中.
Boz*_*zho 22
使用commons-configuration,您可以使用统一的API来访问属性,无论它们如何表示 - .properties,xml,JNDI等.例如:
config.properties:
jdbcHost=192.168.12.35
jdbcUsername=dbuser
jdbcPassword=pass
Run Code Online (Sandbox Code Playgroud)
config.xml:
<config>
<jdbcHost>192.168.12.35</jdbcHost>
<jdbcUsername>dbuser</jdbcUsername>
<jdbcPassword>pass</jdbcPassword>
</config>
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,他们都可以通过以下方式访问:
String host = config.getString("jdbcHost");
Run Code Online (Sandbox Code Playgroud)
Nic*_*ole 12
你几乎就在那里......我将保持你的方法相同,并为通过类似于以下任一方法的方法运行的应用程序实例提供正确的配置文件:
以不同的方式命名所有配置文件,让应用程序通过一些独特的标准(用户名,主机名等)将它们引入:
根据应用程序假定存在的环境变量,将它们保留在代码库之外的位置:
我甚至在同一个项目中使用了这些方法的组合(构建过程配置为#1,运行时配置为#2).
如果您的应用程序使用数据库,则可以创建"配置"表,如下所示:
create table configuration (mode char(3), key varchar(255), value varchar(1023));
Run Code Online (Sandbox Code Playgroud)
您可以使用init脚本初始化它,例如init.sql,内容如下:
insert into configuration values ('pro', 'param1', 'value1'); -- production
insert into configuration values ('dev', 'param1', 'value1'); -- development
insert into configuration values ('tst', 'param1', 'value1'); -- testing
...
Run Code Online (Sandbox Code Playgroud)
这种方法的好处如下:
| 归档时间: |
|
| 查看次数: |
37552 次 |
| 最近记录: |