我有PropertySourcesPlaceholderConfigurer
的自定义实现,我用它来加载其他属性源并将它们放在不同的位置(一个在最后,一个在systemProperties之前)。因此可以在不同的级别覆盖属性。
基于一些属性,我需要加载一组bean。为此,我实施了ImportBeanDefinitionRegistrar
。
不幸的是ImportBeanDefinitionRegistrar
在PropertySourcesPlaceholderConfigurer
之前执行。
我也尝试使用@ConditionalOnProperty
,结果相同。并且PropertySourceFactory
在早期开始执行,但在那时我无法定位这些额外的属性来源。
有没有办法在PropertySource
之前或Spring生命周期的早期阶段以自定义顺序添加其他ImportBeanDefinitionRegistrar
?
在这里,我有sandbox app来玩这个概念。 实际上,我将其作为Spring和Spring Boot应用程序的内部库,以实现具有属性的其他功能。
答案 0 :(得分:0)
您应该实现EnvironmentPostProcessor
并移动属性源的所有逻辑。您当前的项目已被打破,因为您无法保证@PropertySource
将提前处理(实际上,它不会)。