天天看点

Spring学习笔记之BeanFactory

<a href="https://s1.51cto.com/wyfs02/M00/A6/AE/wKioL1nYc9-AHBHzAABMnTu4_Ho866.png" target="_blank"></a>

BeanFactory是一个顶级接口,下面看下它是干什么的。

<a href="https://s2.51cto.com/wyfs02/M02/07/FC/wKiom1nYdGHQ7yM7AACxQJuUQic126.png" target="_blank"></a>

这里说了,它是访问Spring Bean容器的根接口,是Bean容器的基本视图。

它的一些子接口,比如ListableBeanFactory和ConfigurableBeanFactory都有特别的而且不同的用途。

实现了这个接口的对象维护了许多的Bean定义,每一个Bean定义用一个名字来唯一标识。

下面看一下它的子接口以及实现类

<a href="https://s1.51cto.com/wyfs02/M02/A6/AE/wKioL1nYdcrBi6PGAABxkmbPJio440.png" target="_blank"></a>

有三个子接口直接继承自BeanFactory,他们分别是ListableBeanFactory、HierarchicalBeanFactory和AutowireCapableBeanFactory。

下面分别看一下它们各自有什么样的用途:

<a href="https://s2.51cto.com/wyfs02/M01/A6/AE/wKioL1nYdtuhLGulAAEJ3E46cYc156.png" target="_blank"></a>

<a href="https://s1.51cto.com/wyfs02/M02/07/FC/wKiom1nYd3qR2eOgAABvHdoAV7M089.png" target="_blank"></a>

在这个接口的注释中说了,说这是BeanFactory的一个扩展接口,它可以列举出所有的Bean示例,而不是当客户端请求的时候去根据名字一个一个的查找。

<a href="https://s1.51cto.com/wyfs02/M00/07/FC/wKiom1nYeQ_Bp6AtAABks7fJLL0998.png" target="_blank"></a>

HierarchicalBeanFactory是一种能够分层的Bean Factory。什么意思呢?什么叫有层级?什么叫分层?我的理解是,可以被继承。

<a href="https://s4.51cto.com/wyfs02/M00/A6/AE/wKioL1nYecHDq5NUAAB2dfhlQ0o145.png" target="_blank"></a>

<a href="https://s5.51cto.com/wyfs02/M02/07/FC/wKiom1nYekbxdkZ5AAArrpq_CYY187.png" target="_blank"></a>

AutowireCapableBeanFactory有自动装配的能力。

最后,我们看一下DefaultListableBeanFactory

<a href="https://s5.51cto.com/wyfs02/M00/A6/AE/wKioL1nYezeSbWY1AAE8cHmdbM8958.png" target="_blank"></a>

这个类直接或间接的实现了那三个接口,也就是说上面说的三种特性它都有。

文档中也说了,他是一个成熟的Bean Factory。

它最典型的用法是在Bean被访问之前注册所有的Bean。因此,在一个本地的Bean定义表中查找是很廉价的操作。

本文转自   手不要乱摸  51CTO博客,原文链接:http://blog.51cto.com/5880861/1970615