0

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

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

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

4

1 回答 1

3

您可以通过系统属性添加属性文件名

检查这个

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

于 2013-04-09T22:52:19.733 回答