如何根据自定义属性加载bean
How to load beans based on custom properties
我有 PropertySourcesPlaceholderConfigurer
的自定义实现,我用它来加载额外的 属性 源并将它们放在不同的位置(一个在末尾,一个在 systemProperties 之前)。因此可以在不同级别覆盖属性。
根据某些属性,我需要加载一组 bean。为此,我正在实施 ImportBeanDefinitionRegistrar
.
不幸的是 ImportBeanDefinitionRegistrar
在 PropertySourcesPlaceholderConfigurer
之前执行。
我也尝试使用 @ConditionalOnProperty
,结果相同。 PropertySourceFactory
是在早期开始执行的,但那时我无法定位那些额外的 属性 来源。
有没有办法在 ImportBeanDefinitionRegistrar
之前或 Spring 生命周期的早期以自定义顺序添加额外的 PropertySource
?
这里我有sandbox app来玩这个概念。
实际上,我在 Spring 和 Spring 引导应用程序的内部库中有这个,以启用具有属性的附加功能。
您应该实施 EnvironmentPostProcessor
并将 属性 来源的所有逻辑移到那里。您当前的项目已损坏,因为您无法保证 @PropertySource
会提前处理(实际上不会)。
我有 PropertySourcesPlaceholderConfigurer
的自定义实现,我用它来加载额外的 属性 源并将它们放在不同的位置(一个在末尾,一个在 systemProperties 之前)。因此可以在不同级别覆盖属性。
根据某些属性,我需要加载一组 bean。为此,我正在实施 ImportBeanDefinitionRegistrar
.
不幸的是 ImportBeanDefinitionRegistrar
在 PropertySourcesPlaceholderConfigurer
之前执行。
我也尝试使用 @ConditionalOnProperty
,结果相同。 PropertySourceFactory
是在早期开始执行的,但那时我无法定位那些额外的 属性 来源。
有没有办法在 ImportBeanDefinitionRegistrar
之前或 Spring 生命周期的早期以自定义顺序添加额外的 PropertySource
?
这里我有sandbox app来玩这个概念。 实际上,我在 Spring 和 Spring 引导应用程序的内部库中有这个,以启用具有属性的附加功能。
您应该实施 EnvironmentPostProcessor
并将 属性 来源的所有逻辑移到那里。您当前的项目已损坏,因为您无法保证 @PropertySource
会提前处理(实际上不会)。