默认和用户提供的属性文件w / Spring

时间:2013-04-09 21:50:45

标签: java spring configuration properties-file

我想允许我的Spring 3.1.2应用程序从我的jar中嵌入的默认属性文件加载配置属性,另外允许用户将覆盖属性文件的路径指定为命令行参数。

我知道我可以使用<context:property-placeholder>来处理从类路径加载属性的简单方案,但是我如何使用可能有两个合并属性文件的属性处理上面的场景?

我试图复制的场景基本上是由Apache Commons Configuration的CompositeConfiguration解决的。

1 个答案:

答案 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/

http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/expressions.html#expressions-beandef-xml-based

http://static.springsource.org/spring/docs/3.1.x/javadoc-api/org/springframework/context/support/PropertySourcesPlaceholderConfigurer.html

<强> 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进行工作和测试。