如何覆盖PropertySourcesPropertyResolver并向Externalized配置添加其他属性源

时间:2015-04-25 16:46:09

标签: java spring spring-boot

有没有办法覆盖Spring Boot的PropertySourcesPropertyResolver并通过添加额外的属性源来扩展Externalize configuration

我尝试做的是在当前列表中添加另一个属性源,并能够使用当前机制覆盖此属性。 并扩展PropertySourcesPropertyResolver,所以当Spring映射使用@ConfigurationProperties注释的类的属性时 并且要求输入密钥,它可以检查具有两个不同前缀的密钥。

例如,如果我有来自两个不同位置的属性:

位置1的属性:   data.user =用户名

位置2的属性:  service.data.user = serviceUserName

我希望能够使用service.data.user的值覆盖data.user的值(如果该属性存在)。

1 个答案:

答案 0 :(得分:0)

来自:http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/beans/factory/config/PlaceholderConfigurerSupport.html#DEFAULT_VALUE_SEPARATOR

  

具有默认值的示例XML属性:

 <property name="url" value="jdbc:${dbname:defaultdb}"/>

但是,似乎有一些人在使用多个属性占位符时出现问题,因此您可能需要注意:

您可以采用的另一种方法是为data.user属性提供默认值,并让人们根据需要覆盖它。