私は、Spring のプロパティ置換メカニズムに少し戸惑っています。この Java Config があるとしましょう
@Configuration
@ComponentScan(basePackageClasses = Application.class)
@PropertySources({
@PropertySource("classpath:/config/default.properties")
})
public class ApplicationConfig {
@Bean
public static PropertySourcesPlaceholderConfigurer propertyPlaceholderConfigurer() {
PropertySourcesPlaceholderConfigurer pspc = new PropertySourcesPlaceholderConfigurer();
return pspc;
}
次に、次のようなカスタム プレースホルダーを使用して、Spring-Data アノテーションを追加し、@EnableMongoRepositories
スキャン用のカスタム ベースパッケージを定義します
@EnableMongoRepositories("${my.custom.repobasepackage}")
。プレースホルダーは私の default.properties で定義されています。
ただし、このプロパティはここでは解決できません。Spring のプロパティ置換をさらに詳しく調べると、プロパティを解決しようとしていることがわかります。
ただし、プレースホルダーを置き換えるために使用される基本Environment
クラスは、私の PropertyPlaceholderConfigurer については認識していませんが、私の SystemProperties と VM-Props についてしか認識していません。:-(
org.springframework.context.annotation.ClassPathBeanDefinitionScanner#getOrCreateEnvironment.java#339 ( Spring 4.0.1 を使用しています) で「PropertyPlaceholder」が既に配置されていることがわかります。したがって、初期化の順序の問題ではありませんが、使用された BeanDefinitionRegistry は Interface を実装していないため、使用されませんEnvironmentCapable
。ここで、Spring App-Context Bootstrap に関する私の理解は終わりです。
誰か助けてくれませんか?Environment
プロパティ プレースホルダーを使用するインスタンスを提供できる BeanDefinitionRegistry はありますか?
どんな助けでも大歓迎です!! 私はあなたのためにクッキーを持っています!:-))
乾杯、ステファン