欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-03-10 17:05:44
注册beanpostprocessorrefresh()调用registerbeanpostprocessors(beanfactory)方法,注册bean的后置处理器,后置处理器是用来拦截bean创...

注册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详解

到此这篇关于spring容器的创建过程之如何注册beanpostprocessor详解的文章就介绍到这了,更多相关注册beanpostprocessor内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!