0a89bcc8a3176fb3bc666bf6780a10f8ba626e61
[demos/multiple-beans] / src / main / java / de / juplo / demos / multiplebeans / MultipleBeansBeanFactoryPostProcessor.java
1 package de.juplo.demos.multiplebeans;
2
3 import org.springframework.beans.BeansException;
4 import org.springframework.beans.factory.config.BeanDefinition;
5 import org.springframework.beans.factory.config.BeanFactoryPostProcessor;
6 import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
7 import org.springframework.beans.factory.support.BeanDefinitionBuilder;
8 import org.springframework.beans.factory.support.BeanDefinitionRegistry;
9 import org.springframework.stereotype.Component;
10
11 @Component
12 public class MultipleBeansBeanFactoryPostProcessor implements BeanFactoryPostProcessor {
13
14     public void postProcessBeanFactory(ConfigurableListableBeanFactory factory) throws BeansException {
15
16         MultipleBeansProperties properties = factory.getBean(MultipleBeansProperties.class);
17         BeanDefinitionRegistry registry = (BeanDefinitionRegistry)factory;
18
19         for (MultipleBeansProperties.Site site : properties.site) {
20             BeanDefinition beanDefinition =
21                     BeanDefinitionBuilder
22                             .genericBeanDefinition(SiteController.class)
23                             .addConstructorArgValue(site.name)
24                             .addConstructorArgValue(site.description)
25                             .getBeanDefinition();
26
27             registry.registerBeanDefinition("name", beanDefinition);
28         }
29     }
30 }