首页 > 其他分享 >核心子方法6: registerBeanPostProcessors(beanFactory)方法详解

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

时间:2024-03-26 11:26:48浏览次数:29  
标签:BeanPostProcessor registerBeanPostProcessors beanFactory 接口 bean 详解 注册 Applicati

先总结: 该方法用于创建并注册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,则从多播器中提前删除

  

  

 

标签:BeanPostProcessor,registerBeanPostProcessors,beanFactory,接口,bean,详解,注册,Applicati
From: https://www.cnblogs.com/superpiter/p/18096198

相关文章

  • 详解SSL证书系列(6)了解HTTP及网络基础
    使用HTTP协议访问Web你知道当我们在网页浏览器(比如Chrome)的地址栏中输入URL时,Web网页是如何呈现的吗? Web页面当然不会凭空显示出来。根据Web浏览器地址栏中指定的URL,Web浏览器从Web服务器端获取文件资源等信息,从而显示出Web页面。像这种通过发送请求然后获取服务器资源的Web......
  • CocosCtreator知识点4:Creator中的坐标系和节点属性详解
    Creator中的坐标系和节点属性详解在CocosCreator中,游戏场景(Scene)是开发时组织内容的基础,也是呈现给玩家所有游戏内容的载体。而节点是场景的基础组成单位。可以把场景理解为组织内容的空间或平台,所有的内容(节点)通过其位置属性确定在该空间中的某个位置呈现。而为了确定空间......
  • 【机器学习】贝叶斯上篇(详解)
    深入理解贝叶斯学习:核心原理及应用全解析在机器学习的领域内,贝叶斯学习作为一种强大的框架,使我们能够在不确定性条件下进行预测和决策。贝叶斯学习源于托马斯·贝叶斯的工作,提供了一种概率论的学习方法,与传统的频率统计学提供了不同的视角。本文将深入探讨贝叶斯学习的核心原......
  • 面向对象08:封装详解
    packagecom.oop.demo04;//类private:私有publicclassStudent{//属性私有,封装大多数时候都是对于属性来的privateStringname;//名字,以前public所有人都可以操作这个名字,现在属性私有就不让所有人都可以操纵这个属性了privateintid;//学号priva......
  • JavaScript初识及基本语法详解
    JavaScript是一种轻量级的编程语言,它可以在网页中嵌入,用来控制网页的动态效果和用户交互。JavaScript是所有现代网页浏览器都支持的脚本语言,它可以让网页变得“活”起来,实现各种复杂的功能。JavaScript的基本语法JavaScript的语法基础与Java语言类似,但它是解释型语言,不需......
  • 慢查询分析详解
    MySQL慢查询分析工具pt-query-digest详解目录MySQL慢查询分析工具pt-query-digest详解一、简介二、安装pt-query-digest三、pt-query-digest语法及重要选项五、用法示例转自:https://blog.csdn.net/xiaoweite1/article/details/80299754一、简介pt-query-digest是用于分析mysql......
  • git rebase详解(图解+最简单示例,一次就懂)
    引言网上有太多讲rebase和merge的文章,但大多都是复制粘贴没有自己的理解,而且很多博客的例子写的过于复杂,让人没兴趣看下去。根据奥卡姆剃刀原则,本文举最简单例子,大白话几句就让你快速掌握rebase的核心原理和用法。本博客将持续修订更新,看完如果还是有疑问,可以评论区留言,我解释到......
  • 【WPF应用13】WPF基本控件-DockPanel布局详解与示例
    引言WPF(WindowsPresentationFoundation)是微软.NET框架的一个组成部分,它用于构建桌面应用程序的用户界面。在WPF中,控件是构建用户界面的基本元素,而布局控件则负责安排其他控件的位置和大小。DockPanel是WPF中的一个布局控件,它允许您将子控件沿着边缘排列,类似于......
  • 【WPF应用12】基本控件-WrapPanel布局详解与示例
    在WindowsPresentationFoundation(WPF)中,WrapPanel是一个强大的布局控件,它允许子控件在空间不足时自动换行,提供了极大的灵活性。在本文中,我们将详细介绍WrapPanel的布局原理、使用方法以及在开发中的应用示例。1.WrapPanel控件的布局原理WrapPanel是WPF中的一种面板......
  • MyBatisPlus新版代码生成器(Velocity模板引擎详解)
    文章目录一、Velocity模板引擎1、velocity简介2、快速入门3、基础语法4、注释5、变量6、循环7、条件8、引入资源9、macro宏二、MybatisPlus代码生成器1、MP代码生成器2、自定义velocity模板2.1、MybatisPlus自带模板和变量2.2、公共模板`common.vm`文件2.3、实体模板`en......