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

 更新时间:2021年06月02日 15:45:36   作者:煎丶包  
关于BeanPostProcessor 各位一定不陌生,今天整理的这篇文章总结了如何注册BeanPostProcessor,文中有非常详细的图文示例,需要的朋友可以参考下

注册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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java锁升级的实现过程

    Java锁升级的实现过程

    这篇文章主要介绍了Java锁升级的实现过程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • Java的内存分配与回收策略详解

    Java的内存分配与回收策略详解

    这篇文章主要介绍了Java的内存分配与回收策略详解,对象的内存分配,就是在堆上分配,对象主要分配在新生代的 Eden 区上,少数情况下可能直接分配在老年代,分配规则不固定,取决于当前使用的垃圾收集器组合以及相关的参数配置,需要的朋友可以参考下
    2023-08-08
  • 一文搞懂Spring中@Autowired和@Resource的区别

    一文搞懂Spring中@Autowired和@Resource的区别

    @Autowired 和 @Resource 都是 Spring/Spring Boot 项目中,用来进行依赖注入的注解。它们都提供了将依赖对象注入到当前对象的功能,但二者却有众多不同,并且这也是常见的面试题之一,所以我们今天就来盘它
    2022-08-08
  • Java Zip压缩之简化文件和文件夹的压缩操作

    Java Zip压缩之简化文件和文件夹的压缩操作

    这篇文章主要给大家介绍了关于Java Zip压缩之简化文件和文件夹的压缩操作,Zip压缩是一种常见的文件压缩格式,它将多个文件和文件夹打包成一个以.zip为后缀的压缩包,需要的朋友可以参考下
    2023-10-10
  • Jenkins安装与配置及汉化过程

    Jenkins安装与配置及汉化过程

    这篇文章主要介绍了Jenkins安装与配置及汉化过程,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • Java设计模式之建造者模式(Builder模式)介绍

    Java设计模式之建造者模式(Builder模式)介绍

    这篇文章主要介绍了Java设计模式之建造者模式(Builder模式)介绍,本文讲解了为何使用建造者模式、如何使用建造者模式、Builder模式的应用等内容,需要的朋友可以参考下
    2015-03-03
  • Knife4j 3.0.3 整合SpringBoot 2.6.4的详细过程

    Knife4j 3.0.3 整合SpringBoot 2.6.4的详细过程

    本文要讲的是 Knife4j 3.0.3 整合SpringBoot 2.6.4,在SpringBoot 2.4以上的版本和之前的版本还是不一样的,这个也容易导致一些问题,本文就这两个版本的整合做一个实战介绍
    2022-09-09
  • SpringBoot事务使用及回滚实现代码详解

    SpringBoot事务使用及回滚实现代码详解

    这篇文章主要介绍了SpringBoot事务使用及回滚实现代码详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • 使用Swagger时Controller中api接口显示不全的问题分析及解决

    使用Swagger时Controller中api接口显示不全的问题分析及解决

    swagger是一个十分好用的api接口管理、测试框架,现在越来越多的人使用这个做接口的测试和管理,但经常遇到Controller中的api接口显示不全的问题,所以本文给大家详细分析了问题以及解决方法,需要的朋友可以参考下
    2024-02-02
  • SpringBoot2种单元测试方法解析

    SpringBoot2种单元测试方法解析

    这篇文章主要介绍了SpringBoot2种单元测试方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10

最新评论