如何基于自定义属性加载bean

时间:2016-07-14 20:19:03

标签: spring properties configuration spring-boot configuration-files

我有PropertySourcesPlaceholderConfigurer的自定义实现,我用它来加载其他属性源并将它们放在不同的位置(一个在最后,一个在systemProperties之前)。因此可以在不同的级别覆盖属性。

基于一些属性,我需要加载一组bean。为此,我实施了ImportBeanDefinitionRegistrar

不幸的是ImportBeanDefinitionRegistrarPropertySourcesPlaceholderConfigurer之前执行。 我也尝试使用@ConditionalOnProperty,结果相同。并且PropertySourceFactory在早期开始执行,但在那时我无法定位这些额外的属性来源。

有没有办法在PropertySource之前或Spring生命周期的早期阶段以自定义顺序添加其他ImportBeanDefinitionRegistrar

在这里,我有sandbox app来玩这个概念。 实际上,我将其作为Spring和Spring Boot应用程序的内部库,以实现具有属性的其他功能。

1 个答案:

答案 0 :(得分:0)

您应该实现EnvironmentPostProcessor并移动属性源的所有逻辑。您当前的项目已被打破,因为您无法保证@PropertySource将提前处理(实际上,它不会)。