BeanFacotry体系结构

Spring Ioc 容器设计可以分为两个路线, 一个是以 BeanFactory 为主的简单容器, 另一个是以 ApplicationContext 为主的高级容器, 高级容器增加了许多面向实际的功能, 让原本在 BeanFacotory 当中实现编码的功能使用配置就可以完成。

image-20220102135848371

BeanFactory 常用方法

image-20220102140338054

ListableBeanFactory

该接口可以以列表的形式提供 Bean 的相关信息, 可以批量的列出工厂生产实例的信息, 可以获取所有 Bean 的名称集合, BeanDifinition 注册的总数。

image-20220102140546253

HierarchicalBeanFactory

image-20220102140708215

  • 第一个方法返回本 Bean 工厂的父工厂。这个方法实现了工厂的分层。
  • 第二个方法判断本地工厂是否包含这个 Bean(忽略其他所有父工厂)。这也是分层思想的体现。

这个工厂接口非常简单,实现了 Bean 工厂的分层。这个工厂接口也是继承自 BeanFacotory,也是一个二级接口,相对于父接口,它只扩展了一个重要的功能(工厂分层)。

AutowireCapableBeanFactory

自动装配的 Bean 工厂

  • 组件扫描:自动发现应用容器中需要创建的 Bean, 在指定范围内找出被 @Controller, @Service 这些注解标签标记的 Bean。
  • 自动装配:自动满足 Bean 之间的依赖,指的就是 Spring 的依赖注入功能, 对被 @Autowired 标记的标签进行自动注入。

这个工厂接口继承自 BeanFacotory,它扩展了自动装配的功能,根据类定义 BeanDefinition 装配 Bean、执行前、后处理器等。

image-20220102142120903

ConfigurableBeanFactory

ConfigurableBeanFactory 同时继承了 HierarchicalBeanFactorySingletonBeanRegistry 这两个接口,即同时继承了分层和单例类注册的功能。并额外独有 30 多个方法, 这 30 个方法包含了工厂创建、注册一个 Bean 的众多细节。

image-20220102142246658

ConfigurableListableBeanFactory

集大成的接口, 它整合了 BeanFactory 体系的所有二级接口, 扩展之后,加上自有的这 8 个方法。

image-20220102142412978

DefaultListableBeanFactory

它是真正第一个可以独立运行的 IoC 容器, 它实现了 ConfigurableListableBeanFactory, 以及 BeanDefinition 接口,其中 BeanDefinitionMap 成员变量, 该成员变量是存储容器当中所有注册过了的 BeanDefinition 实例的载体。

image-20220102142516553

posted @ 2022-01-02 14:43  BNTang  阅读(47)  评论(0)    收藏  举报