使用多个 maven 项目和持续集成(例如 hudson 或
jenkins) 来构建一个包含所有属性的配置 jar
每个环境(dev、qa、prod)的文件,然后捆绑所有内容
作为EAR。但是在生产中事情不能轻易改变
需要时。
我认为配置应该在应用程序实例的数据库中。您的本地机器配置可能与 dev 和 QA、PROD、DR 等不同。
您需要一种以简单的方式将配置从数据库中取出的方法。
我使用提供的 Apache commons-configuration 依赖项创建了一个单独的项目
它有多种存储数据的方式,但我喜欢数据库,并且配置存在于数据库环境中。
import javax.sql.DataSource;
import org.apache.commons.configuration.DatabaseConfiguration;
public class MYConfig extends DatabaseConfiguration {
public MYConfig(DataSource datasource) {
super(datasource, "TABLE_CONFIG", "PROP_KEY", "PROP_VALUE");
}
}
将大部分设置放在数据库中,并有一个简单的屏幕可以修改
它。在内部,我们可以有一个通用的配置服务 EJB,它
可以读取和修改值。每个模块可以有一个自定义扩展
具有特定 getter 和 setter 的版本。
Commons 配置作为一个简单的 API,然后您可以根据需要编写 GUI。
您可以按照自己的意愿制作界面。或者作为速赢没有界面。
版本控制所有属性文件,然后在生产中检查它
并在进行更改后将其签入生产分支。
版本控制很棒。使用组合添加另一个 DatabaseConfiguration。您扩展的类是活动配置,组合类是审计。还有另一个构造函数可以有一个版本。只需重载正确的方法即可获得所需的效果。
import javax.sql.DataSource;
import org.apache.commons.configuration.DatabaseConfiguration;
public class MYConfig extends DatabaseConfiguration {
final DatabaseConfiguration audit;
public MYConfig(DataSource datasource) {
super(datasource, "TABLE_CONFIG", "PROP_KEY", "PROP_VALUE");
audit = new DatabaseConfiguration("TABLE_CONFIG_AUDIT", "PROP_KEY", "PROP_VALUE");
}
@Override
public void addProperty(String key, Object value) {
Object wasValue = super.getProperty(key);
super.addProperty(key, value);
audit.put(key,wasValue);//add version code
}
}
http://commons.apache.org/proper/commons-configuration/