Доступ к свойствам в BeanFactoryPostProcessor - PullRequest
0 голосов
/ 19 декабря 2018

Я пытаюсь создать что-то, что будет автоматически создавать bean-компоненты на основе настраиваемых свойств (от application.yml и т. П.).

Поскольку я не могу просто получить доступ к компоненту свойств, как это обычно делается вBeanFactoryPostProcessor, я немного озадачен тем, как я могу получить к ним доступ.

Как я могу получить доступ к свойствам приложения в BeanFactoryPostProcessor?

1 Ответ

0 голосов
/ 19 декабря 2018

Если вы хотите получить доступ к свойствам безопасным для типа способом BeanFactoryPostProcessor, вам нужно будет связать их с Environment самостоятельно, используя Binder API.По сути, это то, что делает Boot для поддержки @ConfigurationProperties bean-компонентов.

Ваш 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
        }

    };
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...