2012-07-25 75 views
3

我想在我部署的框上使用本地属性文件覆盖在我的war文件中找到的默认值。在本地属性文件中覆盖Spring 3.1中的属性

<context:property-placeholder 
    location="classpath*:*.properties, file:/var/myfolder/local.properties" 
    ignore-resource-not-found="true" 
    ignore-unresolvable="true" /> 

我已经看到,这可以通过提供一个文件作为第二个位置(逗号分隔)来实现。不幸的是,它似乎没有覆盖这些属性。

我已经尝试过使用属性来定义bean和设置位置,但那也不管用。

回答

11

一种方法是将它们分离为两个,并使用顺序

<context:property-placeholder 
    location="classpath*:*.properties" 
    ignore-resource-not-found="true" 
    ignore-unresolvable="true" 
    order ="0" /> 

<context:property-placeholder 
    location="file:/var/myfolder/local.properties" 
    ignore-resource-not-found="true" 
    ignore-unresolvable="true" 
    order="-1"/> 

最低阶优先

+0

感谢Manoj,我试了一下,但不幸的是,由于某种原因,它不适用于我。我不明白为什么。 – 2012-07-25 08:21:55

+0

将此标记为答案(尽管上面的代码也适用)。问题是有2个应用程序上下文 – 2012-07-25 09:20:59

2

发现这个问题。出于某种原因,系统中有2个应用程序上下文。我需要调查这是否有一个合理的理由。只要我将属性文件添加到其他应用程序上下文,它就会工作。

感谢您的帮助!