BeanFactory分层
package org.springframework.beans.factory;//分层工厂
public interface HierarchicalBeanFactory extends BeanFactory {//返回工厂的父工厂BeanFactory getParentBeanFactory();//这个工厂中是否包含这个Beanboolean containsLocalBean(String name);
}
测试代码
@Testpublic void testAutowireWithParent() throws Exception {DefaultListableBeanFactory xbf = new DefaultListableBeanFactory();new XmlBeanDefinitionReader(xbf).loadBeanDefinitions(AUTOWIRE_CONTEXT);DefaultListableBeanFactory lbf = new DefaultListableBeanFactory();MutablePropertyValues pvs = new MutablePropertyValues();pvs.add("name", "kerry");RootBeanDefinition bd = new RootBeanDefinition(TestBean.class);bd.setPropertyValues(pvs);lbf.registerBeanDefinition("spouse", bd);xbf.setParentBeanFactory(lbf);doTestAutowire(xbf);}private void doTestAutowire(DefaultListableBeanFactory xbf) throws Exception {DependenciesBean rod1 = (DependenciesBean) xbf.getBean("rod1");TestBean kerry = (TestBean) xbf.getBean("spouse");// should have been autowiredassertEquals(kerry, rod1.getSpouse());}
调用了setParentBeanFactory设置BeanFactory,lbf中注册了spouse,所以在调用getBean时可以获取到spouse