注册beanpostprocessor

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

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

  • beanpostprocessor
  • destructionawarebeanpostprocessor
  • instantiationawarebeanpostprocessor
  • smartinstantiationawarebeanpostprocessor
  • mergedbeandefinitionpostprocessor

首先获取所有的beanpostprocessor

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

先注册实现了priorityordered优先级接口的beanpostprocessor,调用registerbeanpostprocessors()方法进行注册

registerbeanpostprocessors()方法调用addbeanpostprocessor()方法将beanpostprocessor添加到beanfactory

再注册实现了ordered优先级接口的beanpostprocessor

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

最终注册mergedbeandefinitionpostprocessor类型的beanpostprocessor

还会注册一个applicationlistenerdetector来在bean创建完成后检查是否applicationlistener,如果是,就会把这个监听器bean放在容器中保存起来

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