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

BeanFactory 常用方法

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

HierarchicalBeanFactory

- 第一个方法返回本 Bean 工厂的父工厂。这个方法实现了工厂的分层。
- 第二个方法判断本地工厂是否包含这个 Bean(忽略其他所有父工厂)。这也是分层思想的体现。
这个工厂接口非常简单,实现了 Bean 工厂的分层。这个工厂接口也是继承自 BeanFacotory,也是一个二级接口,相对于父接口,它只扩展了一个重要的功能(工厂分层)。
AutowireCapableBeanFactory
自动装配的 Bean 工厂
- 组件扫描:自动发现应用容器中需要创建的 Bean, 在指定范围内找出被
@Controller,@Service这些注解标签标记的 Bean。 - 自动装配:自动满足 Bean 之间的依赖,指的就是 Spring 的依赖注入功能, 对被
@Autowired标记的标签进行自动注入。
这个工厂接口继承自 BeanFacotory,它扩展了自动装配的功能,根据类定义 BeanDefinition 装配 Bean、执行前、后处理器等。

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

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

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


浙公网安备 33010602011771号