gpt4 book ai didi

java - 获取 ImportBeanDefinitionRegistrar 中的 ConfigurationProperties

转载 作者:行者123 更新时间:2023-12-02 00:23:03 31 4
gpt4 key购买 nike

我有一个@ConfigurationProperties POJO。我希望能够在 ImportBeanDefinitionRegistrar

中访问它
@ConfigurationProperties("com.some.prefix")
public class VersionProperties {

private List<String> someList;

private String someString;
}

我有一个具有以下属性的 yaml 文件

com.some.prefix:
some-string: test
some-list:
- v1
- v3

我有一个 AutoConfiguration 类,如下所示:

@Configuration
@EnableConfigurationProperties(SomeProperties.class)
@Import(SomeImportBeanDefinitionRegistrar.class)
public class SomeAutoConfiguration {

}

这个Github Issue表示使注册器 BeanFactoryAware 将允许访问配置属性 bean。

我已经这样做了,但我遇到的问题是在我的注册器中,配置属性 bean 的所有字段都是 null。

@Override
public void registerBeanDefinitions(
AnnotationMetadata importingClassMetadata,
BeanDefinitionRegistry registry
) {
var props = beanFactory.getBean(SomeProperties.class);
// all of props fields are null here
}

最佳答案

问题是 ImportBeanDefinitionRegistrar 在生命周期中发生得太早,无法填写 ConfigurationProperties。因此,我必须让我的注册器 EnvironmentAware 然后使用 Binder API 填写 ConfigurationProperties POJO。

var props = Binder.get(environment)
.bind("com.some.prefix", SomeProperties.class)
.orElse(null);

关于java - 获取 ImportBeanDefinitionRegistrar 中的 ConfigurationProperties,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58070639/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com