@Test public void testFactoryMethodsWithAutowire() { DefaultListableBeanFactory xbf = new DefaultListableBeanFactory(); XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(xbf); reader.loadBeanDefinitions(new ClassPathResource("factory-methods.xml", getClass())); FactoryMethods fm = (FactoryMethods) xbf.getBean("fullWithAutowire"); assertEquals(27, fm.getNum()); assertEquals("gotchaAutowired", fm.getName()); assertEquals("Juergen", fm.getTestBean().getName()); }
@Test public void testFactoryMethodsWithNullValue() { DefaultListableBeanFactory xbf = new DefaultListableBeanFactory(); XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(xbf); reader.loadBeanDefinitions(new ClassPathResource("factory-methods.xml", getClass())); FactoryMethods fm = (FactoryMethods) xbf.getBean("fullWithNull"); assertEquals(27, fm.getNum()); assertEquals(null, fm.getName()); assertEquals("Juergen", fm.getTestBean().getName()); fm = (FactoryMethods) xbf.getBean("fullWithGenericNull"); assertEquals(27, fm.getNum()); assertEquals(null, fm.getName()); assertEquals("Juergen", fm.getTestBean().getName()); fm = (FactoryMethods) xbf.getBean("fullWithNamedNull"); assertEquals(27, fm.getNum()); assertEquals(null, fm.getName()); assertEquals("Juergen", fm.getTestBean().getName()); }
@Test public void testFactoryMethodsSingletonOnTargetClass() { DefaultListableBeanFactory xbf = new DefaultListableBeanFactory(); XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(xbf); reader.loadBeanDefinitions(new ClassPathResource("factory-methods.xml", getClass())); TestBean tb = (TestBean) xbf.getBean("defaultTestBean"); assertEquals("defaultInstance", tb.getName()); assertEquals(1, tb.getAge()); FactoryMethods fm = (FactoryMethods) xbf.getBean("default"); assertEquals(0, fm.getNum()); assertEquals("default", fm.getName()); assertEquals("defaultInstance", fm.getTestBean().getName()); assertEquals("setterString", fm.getStringValue()); fm = (FactoryMethods) xbf.getBean("testBeanOnly"); assertEquals(0, fm.getNum()); assertEquals("default", fm.getName()); // This comes from the test bean assertEquals("Juergen", fm.getTestBean().getName()); fm = (FactoryMethods) xbf.getBean("full"); assertEquals(27, fm.getNum()); assertEquals("gotcha", fm.getName()); assertEquals("Juergen", fm.getTestBean().getName()); FactoryMethods fm2 = (FactoryMethods) xbf.getBean("full"); assertSame(fm, fm2); xbf.destroySingletons(); assertTrue(tb.wasDestroyed()); }
FactoryMethods fm2 = (FactoryMethods) xbf.getBean("defaultPrototype"); assertEquals(0, fm.getNum()); assertEquals("default", fm.getName()); assertEquals("defaultInstance", fm.getTestBean().getName()); assertEquals("setterString", fm.getStringValue()); fm2 = (FactoryMethods) xbf.getBean("testBeanOnlyPrototype"); assertEquals(0, fm.getNum()); assertEquals("default", fm.getName()); fm2 = (FactoryMethods) xbf.getBean("fullPrototype"); assertEquals(27, fm.getNum()); assertEquals("gotcha", fm.getName()); assertEquals("Juergen", fm.getTestBean().getName()); assertEquals(fm.getNum(), fm2.getNum());