核心子方法6: registerBeanPostProcessors(beanFactory)方法详解

先总结: 该方法用于创建并注册Bean后处理器, 先获取创建beanFactory中的BeanPostProcessor排序后注册到beanFactory中(beanFactory.addBeanPostProcessor(postProcessor)), 用于后面创建bean对象时使用

注: 这里不会调用执行BeanPostProcessor, 在创建bean对象getBean->doGetBean的时候才会执行

 

1.获取beanFactory中所有实现了BeanPostProcessor接口的类

  String[] postProcessorNames = beanFactory.getBeanNamesForType(BeanPostProcessor.class, true, false);

2.添加一个默认的BeanPostProcessorChecker(主要用于记录信息)到beanFactory中

  beanFactory.addBeanPostProcessor(new BeanPostProcessorChecker(beanFactory, beanProcessorTargetCount));

3.顺序注册BeanPostProcessor

  先注册实现了PriorityOrdered接口的

  再注册实现了Ordered接口的

  后注册其它未指定顺序的

  最后注册实现了MergedBeanDefinitionPostProcessor(注:主要为spring内部的BeanPostProcessor)接口的

4.注册ApplicationListenerDetector到beanFactory中

  beanFactory.addBeanPostProcessor(new ApplicationListenerDetector(applicationContext));

  ApplicationListenerDetector用来检测bean是否实现了ApplicationListener接口,两个作用:

       1、实例化完成之后,如果bean的单例的并且属于ApplicationListener接口,则加入到多播器中

       2、bean销毁之前,如果bean是一个applicationListener,则从多播器中提前删除

  

  

 

posted @ 2024-03-26 11:12  小黑与小白  阅读(54)  评论(0)    收藏  举报