如何在@PropertySources中引用单独的@PropertySource来获取值

时间:2016-02-06 20:49:20

标签: java spring

我有几个属性文件,在配置

中描述
@Configuration    
@PropertySources({
        @PropertySource(name="p1", value = "classpath:p1.properties"),
        @PropertySource(name="p2", value = "classpath:p2.properties")})

两个文件都具有相同键和不同值的属性,例如:

prop1=11
prop2=12

prop1=21
prop2=22

如何引用正确的属性源来使用值?我的意思是smth喜欢

@Value("${p1.prop1}")
private int prop11;

@Bean
public SomeBean someBean() {
    return new SomeBean(prop11);
}

@Value("${p1.prop1}")是我错误的尝试。

1 个答案:

答案 0 :(得分:2)

你做不到。这两个属性源将合并到同一个Spring Environment中。 .properties文件中相同键的最后声明值将覆盖同一键的任何先前值。如果您阅读@PropertySource的JavaDoc,您将找到以下声明:

  

如果给定的属性键存在于多个.properties文件中,则处理的最后一个@PropertySource批注将“赢”并覆盖。