HierarchicalBeanFactory

HierarchicalBeanFactory层次化的工厂类

public interface HierarchicalBeanFactory extends BeanFactory {

    /**
     * Return the parent bean factory, or {@code null} if there is none.
     */
    BeanFactory getParentBeanFactory();

    /**
     * Return whether the local bean factory contains a bean of the given name,
     * ignoring beans defined in ancestor contexts.
     * <p>This is an alternative to {@code containsBean}, ignoring a bean
     * of the given name from an ancestor bean factory.
     * @param name the name of the bean to query
     * @return whether a bean with the given name is defined in the local factory
     * @see BeanFactory#containsBean
     */
    boolean containsLocalBean(String name);

}

在创建容器的过程中也可以传入父类的容器,配置如下
父类XML配置(parent.xml):

<bean class="java.lang.String" id="parentname">
    <constructor-arg value="parent"/>
</bean>

子类(child.xml):



<bean class="com.he.hierarchicalIOC.Entity" id="entity2">
    <property name="name">
        <ref parent="parentname"/>
    </property>
</bean>

<bean class="java.lang.String" id="childname">
    <constructor-arg value="childname"/>
</bean>

<bean class="com.he.hierarchicalIOC.Entity" id="entity3">
    <property name="name">
        <ref local="childname"/>
    </property>
</bean>

子类创建容器的过程中传入父类的容器:

public class APP
{
    public static void main(String[] args) {
        ApplicationContext parent = new ClassPathXmlApplicationContext("com/he/hierarchicalIOC/parent.xml");
        ApplicationContext child = new ClassPathXmlApplicationContext(new String[]{"child.xml"},parent);
        Entity entiy1 = (Entity)child.getBean("entity1");
        Entity entiy2 = (Entity)child.getBean("entity2");
        Entity entiy3 = (Entity)child.getBean("entity3");
        entiy1.performance();
        entiy2.performance();
        entiy3.performance();
        System.out.println(ClassLoader.getSystemClassLoader());
        System.out.println(ClassLoader.getSystemClassLoader().getParent());
    }
}

输出结果如下:

hellochild
helloparent
hellochildname
sun.misc.Launcher$AppClassLoader@16b98e56
sun.misc.Launcher$ExtClassLoader@75a1cd57
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值