zoukankan      html  css  js  c++  java
  • Spring:BeanFactoryPostProcessor原理

    • BeanPostProcessor:bean后置处理器,bean创建对象初始化前后进行拦截工作
    • BeanFactoryPostProcessor:beanFactory的后置处理器,在BeanFactory标准初始化之后调用:所以bean定义信息已经保存加载到beanFactory中,但是bean实例还未创建

    测试:

    @Component
    public class MyBeanFactoryPostProcessor implements BeanFactoryPostProcessor {
    
        @Override
        public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {
            System.out.println("MyBeanFactoryPostProcessor...");
            int beanDefinitionCount = beanFactory.getBeanDefinitionCount();
            String[] beanDefinitionNames = beanFactory.getBeanDefinitionNames();
            System.out.println(Arrays.toString(beanDefinitionNames));
            System.out.println(beanDefinitionCount);
        }
    
    }
    
    @ComponentScan
    @Configuration
    public class ExtConfig {
    
        @Bean
        public Blue blue(){
            return new Blue();
        }
    
    }
    
    public class Blue {
    
        public Blue(){
            System.out.println("blue construct ...");
        }
    }
    
    public class MainTest {
        public static void main(String[] args) {
            ApplicationContext applicationContext  = new AnnotationConfigApplicationContext(ExtConfig.class);
            ((AnnotationConfigApplicationContext) applicationContext).close();
    
        }
    }
    

    image-20210316090745028

    原理:在spring容器启动时的refresh方法:有一步invokeBeanFactoryPostProcessors。这一步会执行所有的BeanFactoryPostProcessors

    image-20210316092442603

    image-20210316091214471

    方法invokeBeanFactoryPostProcessors:

    image-20210316091840647

    image-20210316091631786

    方法:invokeBeanFactoryPostProcessors,该方法就是调用BeanFactoryPostProcessor的postProcessBeanFactory方法

    image-20210316091950727

  • 相关阅读:
    希尔伯特空间
    Java基础之类型转换总结篇
    超实用在线编译网站,编辑器
    3269: 万水千山粽是情
    Problem A: 李白打酒
    2370: 圆周率
    C语言fmod()函数:对浮点数取模(求余)
    C语言exp()函数:e的次幂函数(以e为底的x次方值)
    2543: 数字整除
    2542: 弟弟的作业
  • 原文地址:https://www.cnblogs.com/wwjj4811/p/14541579.html
Copyright © 2011-2022 走看看