Browse Source

BeanFactory accepts getBean arguments for non-prototype beans as well

Issue: SPR-12488
pull/701/head
Juergen Hoeller 11 years ago
parent
commit
82651a07ab
  1. 34
      spring-beans/src/test/java/org/springframework/beans/factory/xml/FactoryMethodTests.java

34
spring-beans/src/test/java/org/springframework/beans/factory/xml/FactoryMethodTests.java

@ -24,7 +24,6 @@ import java.util.Properties;
import org.junit.Test; import org.junit.Test;
import org.springframework.beans.factory.BeanCreationException; import org.springframework.beans.factory.BeanCreationException;
import org.springframework.beans.factory.BeanDefinitionStoreException;
import org.springframework.beans.factory.support.DefaultListableBeanFactory; import org.springframework.beans.factory.support.DefaultListableBeanFactory;
import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.ClassPathResource;
import org.springframework.tests.sample.beans.TestBean; import org.springframework.tests.sample.beans.TestBean;
@ -325,17 +324,18 @@ public class FactoryMethodTests {
} }
@Test @Test
public void testCannotSpecifyFactoryMethodArgumentsOnSingleton() { public void testCanSpecifyFactoryMethodArgumentsOnSingleton() {
DefaultListableBeanFactory xbf = new DefaultListableBeanFactory(); DefaultListableBeanFactory xbf = new DefaultListableBeanFactory();
XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(xbf); XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(xbf);
reader.loadBeanDefinitions(new ClassPathResource("factory-methods.xml", getClass())); reader.loadBeanDefinitions(new ClassPathResource("factory-methods.xml", getClass()));
try {
xbf.getBean("testBeanOnly", new TestBean()); // First getBean call triggers actual creation of the singleton bean
fail("Shouldn't allow args to be passed to a singleton"); TestBean tb = new TestBean();
} FactoryMethods fm1 = (FactoryMethods) xbf.getBean("testBeanOnly", tb);
catch (BeanDefinitionStoreException ex) { assertSame(tb, fm1.getTestBean());
// OK FactoryMethods fm2 = (FactoryMethods) xbf.getBean("testBeanOnly", new TestBean());
} assertSame(fm1, fm2);
assertSame(tb, fm2.getTestBean());
} }
@Test @Test
@ -343,14 +343,13 @@ public class FactoryMethodTests {
DefaultListableBeanFactory xbf = new DefaultListableBeanFactory(); DefaultListableBeanFactory xbf = new DefaultListableBeanFactory();
XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(xbf); XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(xbf);
reader.loadBeanDefinitions(new ClassPathResource("factory-methods.xml", getClass())); reader.loadBeanDefinitions(new ClassPathResource("factory-methods.xml", getClass()));
xbf.getBean("testBeanOnly");
try { // First getBean call triggers actual creation of the singleton bean
xbf.getBean("testBeanOnly", new TestBean()); FactoryMethods fm1 = (FactoryMethods) xbf.getBean("testBeanOnly");
fail("Shouldn't allow args to be passed to a singleton"); TestBean tb = fm1.getTestBean();
} FactoryMethods fm2 = (FactoryMethods) xbf.getBean("testBeanOnly", new TestBean());
catch (BeanDefinitionStoreException ex) { assertSame(fm1, fm2);
// OK assertSame(tb, fm2.getTestBean());
}
} }
@Test @Test
@ -386,7 +385,6 @@ public class FactoryMethodTests {
assertEquals("someuser", session.getProperty("mail.smtp.user")); assertEquals("someuser", session.getProperty("mail.smtp.user"));
assertEquals("somepw", session.getProperty("mail.smtp.password")); assertEquals("somepw", session.getProperty("mail.smtp.password"));
} }
} }

Loading…
Cancel
Save