我想允许我的Spring 3.1.2应用程序从我的jar中嵌入的默认属性文件加载配置属性,另外允许用户将覆盖属性文件的路径指定为命令行参数。
我知道我可以使用<context:property-placeholder>
来处理从类路径加载属性的简单方案,但是我如何使用可能有两个合并属性文件的属性处理上面的场景?
我试图复制的场景基本上是由Apache Commons Configuration的CompositeConfiguration
解决的。
答案 0 :(得分:3)
您可以通过系统属性添加属性文件名
检查
how to read System environment variable in Spring applicationContext
http://www.summa-tech.com/blog/2009/04/20/6-tips-for-managing-property-files-with-spring/
<强> UPD 强>
1。第一种方法是将PSPC声明为
<context:property-placeholder
location="classpath:app.properties, classpath:user.properties"
ignore-resource-not-found="true" />
然后将app.properties包含在jar中。
用户包含(或不包含)包含user.properties的文件夹到类路径中。
user.properties优先于app.properties。
2。如果您需要用户指定确切的文件
<context:property-placeholder
location="classpath:app.properties, file:${userPropsPath}"
ignore-resource-not-found="true" />
用户添加-DuserPropsPath="<full path here>"
这两个案例都在使用spring-3.1.1进行工作和测试。