/** * Note that overloaded methods are supported. */ public static FactoryMethods newInstance(TestBean tb) { return new FactoryMethods(tb, "default", 0); }
/** * Note that overloaded methods are supported. */ public FactoryMethods newInstance(TestBean tb) { return FactoryMethods.newInstance(tb); }
FactoryMethods fm = (FactoryMethods) xbf.getBean("defaultPrototype"); FactoryMethods fm2 = (FactoryMethods) xbf.getBean("defaultPrototype"); assertEquals(0, fm.getNum()); assertEquals("default", fm.getName()); assertEquals("defaultInstance", fm.getTestBean().getName()); assertEquals("setterString", fm.getStringValue()); assertEquals(fm.getNum(), fm2.getNum()); assertEquals(fm.getStringValue(), fm2.getStringValue()); assertNotSame(fm.getTestBean(), fm2.getTestBean()); assertNotSame(fm, fm2); assertEquals(0, fm.getNum()); assertEquals("default", fm.getName()); assertEquals("Juergen", fm.getTestBean().getName()); assertEquals(fm.getNum(), fm2.getNum()); assertEquals(fm.getStringValue(), fm2.getStringValue()); assertSame(fm.getTestBean(), fm2.getTestBean()); assertNotSame(fm, fm2); assertEquals(27, fm.getNum()); assertEquals("gotcha", fm.getName()); assertEquals("Juergen", fm.getTestBean().getName()); assertEquals(fm.getNum(), fm2.getNum()); assertEquals(fm.getStringValue(), fm2.getStringValue()); assertSame(fm.getTestBean(), fm2.getTestBean());
@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 testCannotSpecifyFactoryMethodArgumentsOnSingletonAfterCreation() { DefaultListableBeanFactory xbf = new DefaultListableBeanFactory(); XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(xbf); reader.loadBeanDefinitions(new ClassPathResource("factory-methods.xml", getClass())); // First getBean call triggers actual creation of the singleton bean FactoryMethods fm1 = (FactoryMethods) xbf.getBean("testBeanOnly"); TestBean tb = fm1.getTestBean(); FactoryMethods fm2 = (FactoryMethods) xbf.getBean("testBeanOnly", new TestBean()); assertSame(fm1, fm2); assertSame(tb, fm2.getTestBean()); }
assertEquals(0, fm1.getNum()); assertEquals("default", fm1.getName()); assertEquals("arg1", fm1.getTestBean().getName()); assertEquals("arg2", fm2.getTestBean().getName()); assertEquals(fm1.getNum(), fm2.getNum()); assertEquals(fm2.getStringValue(), "testBeanOnlyPrototypeDISetterString"); assertEquals(fm2.getStringValue(), fm2.getStringValue()); assertSame(fm2.getTestBean(), fm2.getTestBean()); assertNotSame(fm1, fm2); assertEquals(1, fm3.getNum()); assertEquals("myName", fm3.getName()); assertEquals("arg2", fm3.getTestBean().getName()); assertEquals(0, fm4.getNum()); assertEquals("default", fm4.getName()); assertEquals("arg1", fm4.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 testCanSpecifyFactoryMethodArgumentsOnSingleton() { DefaultListableBeanFactory xbf = new DefaultListableBeanFactory(); XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(xbf); reader.loadBeanDefinitions(new ClassPathResource("factory-methods.xml", getClass())); // First getBean call triggers actual creation of the singleton bean TestBean tb = new TestBean(); FactoryMethods fm1 = (FactoryMethods) xbf.getBean("testBeanOnly", tb); assertSame(tb, fm1.getTestBean()); FactoryMethods fm2 = (FactoryMethods) xbf.getBean("testBeanOnly", new TestBean()); assertSame(fm1, fm2); assertSame(tb, fm2.getTestBean()); }
@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()); }
/** * Note that overloaded methods are supported. */ public static FactoryMethods newInstance(TestBean tb) { return new FactoryMethods(tb, "default", 0); }
@Test public void testInstanceFactoryMethodWithoutArgs() { DefaultListableBeanFactory xbf = new DefaultListableBeanFactory(); XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(xbf); reader.loadBeanDefinitions(new ClassPathResource("factory-methods.xml", getClass())); InstanceFactory.count = 0; xbf.preInstantiateSingletons(); assertEquals(1, InstanceFactory.count); FactoryMethods fm = (FactoryMethods) xbf.getBean("instanceFactoryMethodWithoutArgs"); assertEquals("instanceFactory", fm.getTestBean().getName()); assertEquals(1, InstanceFactory.count); FactoryMethods fm2 = (FactoryMethods) xbf.getBean("instanceFactoryMethodWithoutArgs"); assertEquals("instanceFactory", fm2.getTestBean().getName()); assertSame(fm2, fm); assertEquals(1, InstanceFactory.count); }
public FactoryMethods newInstance(TestBean tb, int num, String name) { return FactoryMethods.newInstance(tb, num, name); }
static FactoryMethods newInstance(TestBean tb, int num, Integer something) { if (something != null) { throw new IllegalStateException("Should never be called with non-null value"); } return new FactoryMethods(tb, null, num); }
@Test public void lookupOverrideOneMethodWithConstructorInjection() { DefaultListableBeanFactory xbf = new DefaultListableBeanFactory(); XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(xbf); reader.loadBeanDefinitions(CONSTRUCTOR_OVERRIDES_CONTEXT); ConstructorInjectedOverrides cio = (ConstructorInjectedOverrides) xbf.getBean("constructorOverrides"); // Check that the setter was invoked... // We should be able to combine Constructor and // Setter Injection assertEquals("Setter string was set", "from property element", cio.getSetterString()); // Jenny is a singleton TestBean jenny = (TestBean) xbf.getBean("jenny"); assertSame(jenny, cio.getTestBean()); assertSame(jenny, cio.getTestBean()); FactoryMethods fm1 = cio.createFactoryMethods(); FactoryMethods fm2 = cio.createFactoryMethods(); assertNotSame("FactoryMethods reference is to a prototype", fm1, fm2); assertSame("The two prototypes hold the same singleton reference", fm1.getTestBean(), fm2.getTestBean()); }
public FactoryMethods defaultInstance() { TestBean tb = new TestBean(); tb.setName(this.factoryBeanProperty); return FactoryMethods.newInstance(tb); }
protected static FactoryMethods newInstance(TestBean tb, int num, String name) { if (name == null) { throw new IllegalStateException("Should never be called with null value"); } return new FactoryMethods(tb, name, num); }
protected static FactoryMethods newInstance(TestBean tb, int num, String name) { if (name == null) { throw new IllegalStateException("Should never be called with null value"); } return new FactoryMethods(tb, name, num); }
public static FactoryMethods defaultInstance() { TestBean tb = new TestBean(); tb.setName("defaultInstance"); return new FactoryMethods(tb, "default", 0); }
public static FactoryMethods defaultInstance() { TestBean tb = new TestBean(); tb.setName("defaultInstance"); return new FactoryMethods(tb, "default", 0); }