Spring的实例化流程和后处理器

Bean 实 例 化 的 基 本 流 程

加 载xml配置文件,解 析 获 取 配 置 中 的 每 个 < bean > 的 信 息 , 封 装 成 一 个 个 的 BeanDefinition 对 象 ;
将 BeanDefinition 存 储 在 一一个 名 为 beanDefinitionMap 的 Map<String,BeanDefinition> 中 ;ApplicationContext 底 层 遍 历 beanDefinitionMap, 创 建 Bean 实 例 对 象 ;
创 建 好 的 Bean 实 例 对 象 , 被 存 储 到 一 个 名 singletonObjects Map<String,Object> 中 ;当 applicationContext.getBean(beanName) 时,从 singletonObjects 去 匹 配 Bean 实 例 返 回 。

Spring 的 后 处 理 器

Spring 的 后 处 理 器 是 Spring 对 外 开 发 的 重 要 扩 展 点 , 允 许 我 们 介 入 到 Bean 的 整 个 实 例 化 流 程 中 来 , 以 达 到 动 态 注 册
BeanDefinition, 动 态 修 改 BeanDefinition, 以 及 动 态 修 改 Bean 的 作 用 。 Spring 主 要 有 两 种 后 处 理 器 :

  1. BeanFactoryPostProcessor: Bean 工 厂 后 处 理 器 ,在BeanDefinitionMap 填 充 完 毕 , Bean 实 例 化 之 前 执行;
    Bean 工 厂 后 处 理 器 一 BeanFactoryPostProcessor
    Spring 提 供 了 一 个 BeanFactoryPostProcessor 的 子 接 口 BeanDefinitionRegistryPostProcessor 专 门 用 于 注 册
    BeanDefinition 操 作
public class MyBeanFactoryPostProcessor2
@Override
public void post ProcessBeanFactory (ConfigurableListab1eBeanFactory
configurableListab1eBeanFactory) throws BeansException { }
@Override
public void post ProcessBeanDefinitionRegistry (BeanDefinitionRegistry beanDefinitionRegistry)
throws BeansException {
BeanDefinition beanDefinition new RootBeanDefinition ( ) ;
beanDefinition.setBeanC1assName ( " com. itheima. dao . UserDaoInp12 " )
beanDefinitionRegistry.registerBeanDefinition ( "userDa02 " , beanDefinition) ;

  1. BeanPostProcessor: Bean 后 处 理 器 , 一 般 在 Bean 实 例 化 之 后 , 填 充 到 单 例 池 singletonObjects 之 前 执 行 。
    Bean 后 处理器 一 BeanPostProcessor
    Bean 被 实 例 化 后 到 最 终 缓 存 到 名 为 singletonObjects 单 例 池 之 前 , 中 间 会 经 过 Bean 的 初 始 化 过 程 , 例 如 :属 性 的填 充 、 初 始 方 法 init 的 执 行 等 , 其 中 有 一 个 对 外 进 行 扩 展 的 点 Bean PostProcessor, 我 们 称 为 Bean 后 处 理 。 跟 上 面 的Bean 工 厂 后 处 理 器 相 似 , 它 也 是 一 个 接 口 , 实 现 了 该 接 口 并 被 容 器 管 理 的 BeanPostProcessor , 会 在 流 程 节 点 上 被
    Spring 自 动 调 用 。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值