spring笔记-SingletonBeanFactoryLocator

1.SingletonBeanFactoryLocator

以单例的形式将特定的xml文件初始化BeanFactory
默认为:"classpath*:beanRefFactory.xml",也可以指定特定的路径

路径地址:
org/springframework/beans/factory/access/SingletonBeanFactoryLocatorTests-ref1.xml

BeanFactoryLocator facLoc = SingletonBeanFactoryLocator.getInstance(
                ClassUtils.addResourcePathToPackagePath(CLASS, REF1_XML));

SingletonBeanFactoryLocatorTests-ref1.xml:



  
  
    
  

  

  
    
     
  

  


SingletonBeanFactoryLocatorTests-beans1.xml



  
    beans1.bean1
  

  
    bean2
    
  


测试代码:

    protected void getInstanceTest1(BeanFactoryLocator facLoc) {
        BeanFactoryReference bfr = facLoc.useBeanFactory("a.qualified.name.of.some.sort");
        BeanFactory fac = bfr.getFactory();
        BeanFactoryReference bfr2 = facLoc.useBeanFactory("another.qualified.name");
        fac = bfr2.getFactory();
        // verify that the same instance is returned
        TestBean tb = (TestBean) fac.getBean("beans1.bean1");
        assertTrue(tb.getName().equals("beans1.bean1"));
        tb.setName("was beans1.bean1");
        BeanFactoryReference bfr3 = facLoc.useBeanFactory("another.qualified.name");
        fac = bfr3.getFactory();
        tb = (TestBean) fac.getBean("beans1.bean1");
        assertTrue(tb.getName().equals("was beans1.bean1"));

        BeanFactoryReference bfr4 = facLoc.useBeanFactory("a.qualified.name.which.is.an.alias");
        fac = bfr4.getFactory();
        tb = (TestBean) fac.getBean("beans1.bean1");
        assertTrue(tb.getName().equals("was beans1.bean1"));

        bfr.release();
        bfr3.release();
        bfr2.release();
        bfr4.release();
    }

2.ContextSingletonBeanFactoryLocator

与SingletonBeanFactoryLocator类似,不过BeanFactory是以ClassPathXmlApplicationContext来初始化的

使用方法类似

    @Test
    public void test2() {
        BeanFactoryLocator facLoc = DefaultLocatorFactory.getInstance();
        facLoc=ContextSingletonBeanFactoryLocator.getInstance();
        BeanFactoryReference bfr = facLoc.useBeanFactory(null);
        basicFunctionalityTest(facLoc);
    }

你可能感兴趣的:(spring笔记-SingletonBeanFactoryLocator)