注入覆盖应用程序中定义的属性文件

时间:2015-05-20 05:06:55

标签: java spring

我需要一些关于将属性值注入到在Web应用程序之外定义的bean的帮助。

Web应用程序在src / main / resource下有一个属性文件.chring应用程序上下文xml将属性占位符定义为

<context:property-placeholder
        location="classpath:test.properties,file:/etc/test1.properties"
        ignore-resource-not-found="true"
    />

其中test1.properties是另一个驻留在应用程序之外的文件。bean注入了应用程序中定义的属性(test.properties),但我想注入test1.properties中定义的属性(理想情况下,想法是覆盖应用程序中的属性值并读取应用程序外部定义的属性值。

感谢。

2 个答案:

答案 0 :(得分:1)

我想这就是你要找的东西

<context:property-placeholder location="file:c:/kp/sec.properties" order="1" ignore-resource-not-found="true" ignore-unresolvable="true" />

<context:property-placeholder location="classpath:kp-props.properties" order="2" />

如果文件sec.properties存在,则从sec.properties获取值,如果文件或属性不存在,则从资源目录中获取kp-props.properties文件中的属性(如果在任一场所应用程序中找不到该属性)会失败)

并说你有财产my.prop,你可以按如下方式注入财产。

@Component
public class KPProps {

    @Value("${my.prop}")
    private int props;

    public void print(){
        System.out.println(props);
    }

}

答案 1 :(得分:1)

您可以在applicationContext.xml

中使用如下所示
<util:properties id="property" location="classpath:test.properties"/>

在Java中,

@Autowired
    protected Properties property;