繁体   English   中英

自动配置在Spring-boot中添加PropertySource

[英]auto-configuration adding PropertySource in spring-boot

我想添加一个自定义PropertySource(该类,而不是注释)。 注释不足,因为它仅处理文件源。

有效的方法是定义自己的ApplicationContextInitializer并将适当的声明添加到META-INF / spring.factories。 ApplicationContextInitializer仅使用: Environment.getPropertySources().addLast(...)但有一些缺点,主要是:

  • 它始终运行,但是最好的行为是仅在满足某些条件时运行(@ConditionalOnClass等)

如何实现呢? 理想情况下,我将使用@Condition ...批注编写自动配置,并在内部声明此类初始化程序(最好是有序的)。

编辑:在我的特定情况下,我想定义Archaius PolledConfigurationSource,但仅当Archaius在类路径上时-这就是为什么我想在生命周期的早期就将@ConditionalOnClass与事件的侦听器一起使用。

您可能有一个中间类-您的应用程序的一部分,我们称其为“ ProviderConfigurer”-其目标是加载服务(与META-INF / services / targetSPi打包在单独的jar中),而该服务又将加载Archaius 。 因此,要激活Archaius,您将需要放置2个罐子而不是一个,但是ProviderConfigurer将能够加载Service提供的属性源(API将是您必须定义的接口的一部分...)在类路径中会发现任何类,如果服务未找到实现您将为此目的定义的SPI的类,则不会执行任何操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM