访问 BeanFactoryPostProcessor 中的属性

sam*_*ime 4 java spring kotlin spring-boot

我正在尝试创建一些可以根据可配置属性(fromapplication.yml等)自动创建 bean 的东西。

因为我不能像往常一样访问属性组件BeanFactoryPostProcessor,所以我有点困惑如何访问它们。

如何访问 中的应用程序属性BeanFactoryPostProcessor

And*_*son 8

如果您想以类型安全的方式访问属性,BeanFactoryPostProcessor您需要Environment使用BinderAPI从您自己绑定它们。这本质上是 Boot 本身为支持@ConfigurationPropertiesbean所做的。

BeanFactoryPostProcessor会看起来像这样:

@Bean
public static BeanFactoryPostProcessor beanFactoryPostProcessor(
        Environment environment) {
    return new BeanFactoryPostProcessor() {

        @Override
        public void postProcessBeanFactory(
                ConfigurableListableBeanFactory beanFactory) throws BeansException {
            BindResult<ExampleProperties> result = Binder.get(environment)
                    .bind("com.example.prefix", ExampleProperties.class);
            ExampleProperties properties = result.get();
            // Use the properties to post-process the bean factory as needed
        }

    };
}
Run Code Online (Sandbox Code Playgroud)

  • 谢谢。一段时间以来,我一直在寻找 Spring 如何做到这一点。我会尝试一下并让你知道。我想这可能会成功。 (2认同)