public interface BeanDefinitionRegistryPostProcessor extends BeanFactoryPostProcessor {
void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry) throws BeansException;
其中BeanDefinitionRegistry Bean定义信息的保存中心,以后BeanFactory就是按照BeanDefinitionRegistry里面保存的每一个bean定义信息创建bean实例;
执行时机:在所有bean定义信息将要被加载,bean实例还未创建的;优先于BeanFactoryPostProcessor执行;
作用:利用BeanDefinitionRegistryPostProcessor给容器中再额外添加一些组件,在标准初始化之后修改applicationContext的内部bean registry
@Override public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry) throws BeansException { System.out.println("postProcessBeanDefinitionRegistry...bean的数量:"+registry.getBeanDefinitionCount()); // 第一种方式 //RootBeanDefinition beanDefinition = new RootBeanDefinition(Blue.class); // 第二种方式 AbstractBeanDefinition beanDefinition = BeanDefinitionBuilder.rootBeanDefinition(Blue.class).getBeanDefinition(); registry.registerBeanDefinition("hello", beanDefinition); }