Spring IOC 源码解析(三) DefaultListableBeanFactory

本文详细解析了Spring的DefaultListableBeanFactory,包括其接口架构如ConfigurableBeanFactory、ConfigurableListableBeanFactory、SingletonBeanRegistry等,以及其实现的BeanFactory核心功能,如单例bean管理、别名注册、BeanDefinition注册等,阐述了DefaultListableBeanFactory如何成为一个完整的BeanFactory。
摘要由CSDN通过智能技术生成

一.前言

在第一篇的时候我们就讲过, spring ioc 的实现,主要的有两条实现分支,而 DefaultListableBeanFactory 的实现就是我们的第一个 BeanFactory 主要实现分支.

来看一下 DefaultListableBeanFactory 的类结构:
在这里插入图片描述

结合我第一篇做的流程图和 idea 生成的流程图,我们下面会重点讲一下左半部分的接口功能,右边类继承会做个简单的讲述.

二.DefaultListableBeanFactory 的接口架构

从左上角开始分析,可以清晰地看出来,DefaultListableBeanFactory 一共实现了哪些接口的方法,也就可以推断出这个容器具备了哪些功能.
(先不考虑 SingletonBeanRegistry)

  1. BeanFactory
  2. HierarchicalBeanFactory
  3. ListableBeanFactory
  4. AutowireCapableBeanFactory
  5. ConfigurableBeanFactory
  6. ConfigurableListableBeanFactory
  7. SingletonBeanRegistry
  8. AliasRegistry
  9. BeanDefinitionRegistry

前四个我们很熟悉,在上一个篇幅我们已经大体讲述了一下接口具有的功能.那么我们从第五个 ConfigurableBeanFactory 开始讲述.

2.1 ConfigurableBeanFactory

从上面的类结构图中我们可以清晰地看到, ConfigurableBeanFactoryHierarchicalBeanFactory 的子接口, 而 HierarchicalBeanFactory 再上一遍中也描述过,它使 BeanFactory 具备分层的概念.也就是父子容器.

HierarchicalBeanFactory 中的方法只有获取父容器和判断本地 BeanFactory 是否包含指定 name 的 bean.

ConfigurableBeanFactoryHierarchicalBeanFactory 的子接口,也就体现出 ConfigurableBeanFactory 是在分层能力上的扩展.

ConfigurableBeanFactory 主要功能:

  1. 设置父容器
  2. 添加或查询 BeanPostProcessor,也就是创建 bean 时的前置后置处理器.
  3. 设置类加载器
  4. 为嵌入值(例如注解属性@Value(${userName}))添加String 解析器
  5. 复制给定的其他 BeanFactory 的所有相关配置
  6. 摧毁 bean 的实例(全部摧毁或摧毁指定 bean)
  7. 返回指定 bean 所依赖的所有 bean,和返回依赖指定 bean 的所有 bean
  8. 返回指定范围的所有 bean (单例 bean 或原型 bean)
  9. 判断给定 beanName 是
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值