このクラスを使用すると、別のConfigクラスの@PropertySourceを既に設定済みにすることができます。Spring 3.1をオーバーライドする方法IgnoreResourceNotFoundとIgnoreUnresolvablePlaceholdersを設定する@PropertySource
@Configuration
@PropertySource({ "classpath:${env.placeholder}/app.properties" })
public class PropertyOverrideConfig {
}
ただし、ファイルまたはプレースホルダが見つからない場合は、コンテキストの読み込みに失敗します。その注釈がロードされたプロパティに次のフラグを設定する必要があるため、プロパティを見つけることができない場合はスキップします。
setIgnoreResourceNotFound(true);
setIgnoreUnresolvablePlaceholders(true);
Question1:何が@PropertySourceためにこれらのフラグを設定するための適切な方法だろうか?
更新: は、それがいずれかのプロパティファイルを選んされていない、thisページを参照すること、注釈なしで同じクラスに@Beanを追加しようとしました。私は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;
}
Question2:私はすべてのヘルプは素晴らしいことだ、私は何かが欠けてる確信しているが、それが何であるかを見つけ出すことができませんでした。
他のPropertySourcesPlaceholderConfigurerインスタンスが登録されていませんか?たぶんPropertySourcesPlaceholderConfigurerを静的に返す '@ Bean'アノテートメソッドを作るべきでしょう(' @ Bean'のためのjava docが推奨するように) –
ありがとう@BorisTreukhov、私は投稿時に静的を逃しました。その間、もし私が同じ 'PropertySourcesPlaceholderConfigurer'をすでに別のConfigに登録していたら、何が起こりますか? – raksja
私は正確に覚えていませんが、いくつかのPropertySourcesPlaceholderConfigurersを持つことができます(プレースホルダプレフィックス/サフィックスを別々に指定することもできます)。おそらくプレースホルダーが解決できないプレースホルダーについて別のプレースホルダー設定をしています –