Spring容器的创建过程之如何注册BeanPostProcessor详解
作者:煎丶包 发布时间:2022-02-17 08:39:09
注册BeanPostProcessor
refresh()
调用registerBeanPostProcessors(beanFactory)
方法,注册Bean的后置处理器,后置处理器是用来拦截bean创建过程的。
不同接口类型的BeanPostProcessor
,即继承了BeanPostProcessor
接口的子接口,在Bean创建前后的执行时机是不一样的
BeanPostProcessor
DestructionAwareBeanPostProcessor
InstantiationAwareBeanPostProcessor
SmartInstantiationAwareBeanPostProcessor
MergedBeanDefinitionPostProcessor
首先获取所有的BeanPostProcessor
后置处理器都默认可以通过PriorityOrdered
、Ordered
这两个接口来指定执行优先级
先注册实现了priorityOrdered
优先级接口的BeanPostProcessor
,调用registerBeanPostProcessors()
方法进行注册
registerBeanPostProcessors()
方法调用addBeanPostProcessor()
方法将BeanPostProcessor
添加到BeanFactory
中
再注册实现了Ordered
优先级接口的BeanPostProcessor
最后注册没有实现任何优先级接口的BeanPostProcessor
最终注册MergedBeanDefinitionPostProcessor
类型的BeanPostProcessor
还会注册一个ApplicationListenerDetector
来在Bean创建完成后检查是否ApplicationListener
,如果是,就会把这个 * bean放在容器中保存起来
来源:https://blog.csdn.net/qq_39794062/article/details/117409464


猜你喜欢
- 本文实例为大家分享了C# GDI+实现时钟表盘的具体代码,供大家参考,具体内容如下一、设计如下图界面按键“打开时钟&am
- 本文实例讲述了java实现求两个字符串最长公共子串的方法。分享给大家供大家参考,具体如下:这个是华为OJ上的一道题目。首先,如果我们用jav
- Android 实现tab视图有2种方法,一种是在布局页面中定义<tabhost>标签,另一种就是继承tabactivity.但
- 太多的if-else不太直观,难以维护。 以下面代码为例,展示几种替代if else的方法。String input = &quo
- public static String getCharset(File file) { &n
- 正则表达式(regular expression)描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某
- 前言痛点:在java开发的过程中,我们经常要面对各种各样的环境,比如开发环境,测试环境,正式环境,而这些环境对项目的需求也不相同。在此之前,
- 1.初始化顺序当Java创建一个对象时,系统先为该对象的所有实例属性分配内存(前提是该类已经被加载过了),接着程序开始对这些实例属性执行初始
- 一、定义实体类Person,封装生成的数据package net.dc.test;public class Person { private
- 使用ViewPager实现屏幕滑动从一个完整的屏幕移动到另一个屏幕的过程被称为屏幕滑动,在安装向导、幻灯片中应用广泛。下面介绍如何利用And
- /** * 快速计算二进制数中1的个数(Fast Bit Counting) * 该算法的思想如下: * 每次将该数与该数减一后的数值
- 把char数组转换成String调用reverseStr()传入一个字符串"let’s"
- 高分配速率(High Allocation Rate)分配速率(Allocation rate)表示单位时间内分配的内存量。通常使用&nbs
- Spring对配置类的处理主要分为2个阶段配置类解析阶段会得到一批配置类的信息,和一些需要注册的beanbean注册阶段将配置类解析阶段得到
- 本文实例讲述了Android图片处理的方法。分享给大家供大家参考,具体如下:package cn.szbw.util;import Andr
- 目录一、SpringMvc框架简介1、Mvc设计理念2、SpringMvc简介二、SpringMvc执行流程1、流程图解2、步骤描述3、核心
- 在EditText输入数字的时候,通常我们需要限制小数点前后位数。比如金额输入一般我们需要限制小数点后面最多2位。我们可以通过 TextWa
- netty心跳机制示例,使用Netty实现心跳机制,使用netty4,IdleStateHandler 实现。Netty心跳机制,netty
- 前言:已经有一个月没写点什么了,感觉心里空落落的。今天再来篇干货,想要学习Webapi的园友们速速动起来,跟着博主一起来学习吧。之前分享过一
- 只需要在控件TextBox的keypress事件中写入如下代码即可满足要求:代码如下:if (e.KeyChar == '.'