BeanFactory的扩展之HierarchicalBeanFactory
先引用BeanFactory的类继承关系图来看一下HierarchicalBeanFactory
的位置
HierarchicalBeanFactory
是BeanFactory
分层功能的扩展,它提供了BeanFactory
分层嵌套的能力。即一个BeanFactory
可以引用另外一个BeanFactory
作为其父容器。HierarchicalBeanFactory
源码目前只提供了两个接口,其源码如下:
public interface HierarchicalBeanFactory extends BeanFactory {
// 返回其父容器BeanFactory
@Nullable
BeanFactory getParentBeanFactory();
// 当前容器下是否包含bean,不会去搜寻父容器
boolean containsLocalBean(String name);
}
在实际使用过程会通过引用父容器parent实现BeanFactory的嵌套调用,如下
public MyBeanFactory implement HierarchicalBeanFactory{
private BeanFactory parent;
private BeanFactory beanFactory;
// 返回父容器parent
@Override
@Nullable
public BeanFactory getParentBeanFactory() {
return this.parent;
}
// 根据当前容器判断是否存在Bean
@Override
public boolean containsBeanDefinition(String beanName) {
return this.beanFactory.containsBeanDefinition(beanName);
}
}
这种关系有点类似与单链表