我想允许我的 Spring 3.1.2 应用程序从我的 jar 中嵌入的默认属性文件加载配置属性,另外还允许用户将覆盖属性文件的路径指定为命令行参数。
我知道我可以<context:property-placeholder>
用于从我的类路径加载属性的简单场景,但是我如何处理上面的场景,其中包含可能来自两个合并的属性文件的属性?
我试图复制的场景基本上是由CompositeConfiguration
Apache Commons Configuration 解决的。
我想允许我的 Spring 3.1.2 应用程序从我的 jar 中嵌入的默认属性文件加载配置属性,另外还允许用户将覆盖属性文件的路径指定为命令行参数。
我知道我可以<context:property-placeholder>
用于从我的类路径加载属性的简单场景,但是我如何处理上面的场景,其中包含可能来自两个合并的属性文件的属性?
我试图复制的场景基本上是由CompositeConfiguration
Apache Commons Configuration 解决的。
您可以通过系统属性添加属性文件名
检查这个
如何在 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 进行工作和测试。