Spring容器的创建过程之如何注册BeanPostProcessor详解

作者:煎丶包 时间:2022-02-17 08:39:09 

注册BeanPostProcessor

refresh()调用registerBeanPostProcessors(beanFactory)方法,注册Bean的后置处理器,后置处理器是用来拦截bean创建过程的。

Spring容器的创建过程之如何注册BeanPostProcessor详解

不同接口类型的BeanPostProcessor,即继承了BeanPostProcessor接口的子接口,在Bean创建前后的执行时机是不一样的

  • BeanPostProcessor

  • DestructionAwareBeanPostProcessor

  • InstantiationAwareBeanPostProcessor

  • SmartInstantiationAwareBeanPostProcessor

  • MergedBeanDefinitionPostProcessor

首先获取所有的BeanPostProcessor

Spring容器的创建过程之如何注册BeanPostProcessor详解

后置处理器都默认可以通过PriorityOrderedOrdered这两个接口来指定执行优先级

Spring容器的创建过程之如何注册BeanPostProcessor详解

先注册实现了priorityOrdered优先级接口的BeanPostProcessor,调用registerBeanPostProcessors()方法进行注册

Spring容器的创建过程之如何注册BeanPostProcessor详解

registerBeanPostProcessors()方法调用addBeanPostProcessor()方法将BeanPostProcessor添加到BeanFactory

Spring容器的创建过程之如何注册BeanPostProcessor详解

再注册实现了Ordered优先级接口的BeanPostProcessor

Spring容器的创建过程之如何注册BeanPostProcessor详解

最后注册没有实现任何优先级接口的BeanPostProcessor

Spring容器的创建过程之如何注册BeanPostProcessor详解

最终注册MergedBeanDefinitionPostProcessor类型的BeanPostProcessor

Spring容器的创建过程之如何注册BeanPostProcessor详解

还会注册一个ApplicationListenerDetector来在Bean创建完成后检查是否ApplicationListener,如果是,就会把这个 * bean放在容器中保存起来

Spring容器的创建过程之如何注册BeanPostProcessor详解

来源:https://blog.csdn.net/qq_39794062/article/details/117409464

标签:Spring,注册,BeanPostProcessor
0
投稿

猜你喜欢

  • Java流程控制之循环结构for,增强for循环

    2023-11-03 10:45:20
  • java多线程CountDownLatch与线程池ThreadPoolExecutor/ExecutorService案例

    2021-06-21 12:29:50
  • java 数据结构单链表的实现

    2022-07-24 09:45:33
  • Java MongoDB数据库连接方法梳理

    2023-11-25 01:01:20
  • java使用dom4j操作xml示例代码

    2022-03-21 18:28:38
  • 详解java中的PropertyChangeSupport与PropertyChangeListener

    2023-10-20 06:19:27
  • Java Collections集合继承结构图_动力节点Java学院整理

    2022-07-10 03:44:53
  • Jsoup解析html实现招聘信息查询功能

    2022-01-08 19:38:07
  • 解析Java中如何获取Spring中配置的bean

    2023-07-20 13:35:26
  • 聊聊java中引用数据类型有哪些

    2022-01-10 11:59:10
  • Java接口默认方法带来的问题分析【二义性问题】

    2023-11-27 20:32:55
  • springboot如何读取配置文件到静态工具类

    2023-11-28 04:44:54
  • mybatis-plus与JPA混合的使用方式

    2022-06-24 02:10:25
  • 解决MyEclipse出现the user operation is waiting的问题

    2022-05-02 21:44:07
  • Java8 HashMap键与Comparable接口小结

    2023-11-29 10:10:31
  • Java单例模式分析

    2023-11-16 03:17:06
  • C++实现LeetCode(9.验证回文数字)

    2023-06-21 00:20:38
  • SpringBoot中@ConfigurationProperties注解实现配置绑定的三种方法

    2023-03-19 12:36:25
  • C++形参与实参的区别实例解析

    2023-11-02 23:39:05
  • 详解Java的回调机制

    2023-07-27 07:17:43
  • asp之家 软件编程 m.aspxhome.com