我有一個彈簧3.1 @Configuration
,需要一個屬性foo
來建立一個bean。該物業在defaults.properties
中定義,但如果應用程序具有活動的override
春季配置文件,則可能會被overrides.properties
中的物業覆蓋。Spring配置文件可以選擇@PropertySources嗎?
沒有覆蓋,代碼是這樣的,和工作...
@Configuration
@PropertySource("classpath:defaults.properties")
public class MyConfiguration {
@Autowired
private Environment environment;
@Bean
public Bean bean() {
...
// this.environment.getRequiredProperty("foo");
...
}
}
我想一個@PropertySource
爲classpath:overrides.properties
上@Profile("overrides")
隊伍。有沒有人有任何想法如何實現這一目標?我考慮過的一些選項是重複的@Configuration
,但這會違反DRY或ConfigurableEnvironment
的程序化操作,但我不確定environment.getPropertySources.addFirst()
調用的去向。
放置在一個XML配置下工作,如果我直接與@Value
注入的財產,而不是當我用Environment
和getRequiredProperty()
方法。
<context:property-placeholder ignore-unresolvable="true" location="classpath:defaults.properties"/>
<beans profile="overrides">
<context:property-placeholder ignore-unresolvable="true" order="0"
location="classpath:overrides.properties"/>
</beans>
更新
如果你想做到這一點,現在,看看春天啓動的YAML support,尤其是「使用YAML而不是屬性」一節。那裏的配置文件支持會使這個問題沒有實際意義,但目前還沒有@PropertySource
的支持。
無法理解爲什麼這個答案有很多upvotes。對配置文件名稱進行硬編碼是違反配置文件的。是不是有類似的方式讓我們通過'spring.profiles.active'參數指定配置文件? – jjoller