我在Spring的Property Replacement機制中有點迷失。可以說我有這個Java配置在Spring Java配置註解中使用佔位符
@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數據註解@EnableMongoRepositories
和定義掃描自定義basepackage,使用自定義的佔位符類似如下 @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沒有實現接口EnvironmentCapable
。在這裏,我的春天應用程序 - 語境的理解自舉是在年底。
任何人可以幫助我在這裏?是否有BeanDefinitionRegistry能夠提供使用我的Property Placeholder的Environment
實例?
任何幫助是高度讚賞!我得到了你的餅乾! :-))
乾杯,斯特凡