讓此類覆蓋另一個Config類中已設置的@PropertySource。如何覆蓋Spring 3.1 @PropertySource來設置IgnoreResourceNotFound&IgnoreUnresolvablePlaceholders
@Configuration
@PropertySource({ "classpath:${env.placeholder}/app.properties" })
public class PropertyOverrideConfig {
}
但是,無論何時文件或佔位符丟失,它的上下文加載失敗。我需要將下列標誌設置爲該註解加載的屬性,以便它將跳過,如果它無法找到該屬性。
setIgnoreResourceNotFound(true);
setIgnoreUnresolvablePlaceholders(true);
問題1:什麼是適當的方式來設置這些標誌爲@PropertySource?
更新: 嘗試添加一個@Bean同一類而沒有註釋引用this頁,它不採摘屬性文件要麼。我沒有一個XML配置。
@Bean
public static PropertySourcesPlaceholderConfigurer properties() {
final PropertySourcesPlaceholderConfigurer pspc = new PropertySourcesPlaceholderConfigurer();
Resource[] resources = new ClassPathResource[ ] {
new ClassPathResource("classpath:${env.placeholder}/app.properties") };
pspc.setLocations(resources);
pspc.setIgnoreResourceNotFound(true);
pspc.setIgnoreUnresolvablePlaceholders(true);
return pspc;
}
問題2:我相信,我失去了一些東西,但無法弄清楚它是什麼,任何幫助將是巨大的。
你確定沒有其他PropertySourcesPlaceholderConfigurer實例註冊嗎?也許你應該使'@ Bean'註釋方法返回PropertySourcesPlaceholderConfigurer static(因爲@ @ Bean推薦的java文檔) –
謝謝@BorisTreukhov,發佈時我錯過了靜態。同時,如果我有相同的'PropertySourcesPlaceholderConfigurer'已經在不同的Config上註冊了bean,會發生什麼? – raksja
我不記得確切的,但你可以有幾個PropertySourcesPlaceholderConfigurers(並指定它們不同的佔位符前綴/後綴) - 也許有另一個佔位符配置器哪些抱怨關於無法解析的佔位符 –