SmartObjectFactory provides getObject(args) variant as well

Issue: SPR-13956
This commit is contained in:
Juergen Hoeller
2016-02-19 14:39:55 +01:00
parent 5ed9046886
commit 890819f886
4 changed files with 81 additions and 10 deletions

View File

@@ -1047,7 +1047,26 @@ public class AutowiredAnnotationBeanPostProcessorTests {
}
@Test
public void testSmartObjectFactoryInjection() {
public void testSmartObjectFactoryInjectionWithPrototype() {
DefaultListableBeanFactory bf = new DefaultListableBeanFactory();
AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor();
bpp.setBeanFactory(bf);
bf.addBeanPostProcessor(bpp);
bf.registerBeanDefinition("annotatedBean", new RootBeanDefinition(SmartObjectFactoryInjectionBean.class));
RootBeanDefinition tbd = new RootBeanDefinition(TestBean.class);
tbd.setScope(RootBeanDefinition.SCOPE_PROTOTYPE);
bf.registerBeanDefinition("testBean", tbd);
SmartObjectFactoryInjectionBean bean = (SmartObjectFactoryInjectionBean) bf.getBean("annotatedBean");
assertEquals(bf.getBean("testBean"), bean.getTestBean());
assertEquals(bf.getBean("testBean", "myName"), bean.getTestBean("myName"));
assertEquals(bf.getBean("testBean"), bean.getOptionalTestBean());
assertEquals(bf.getBean("testBean"), bean.getUniqueTestBean());
bf.destroySingletons();
}
@Test
public void testSmartObjectFactoryInjectionWithSingletonTarget() {
DefaultListableBeanFactory bf = new DefaultListableBeanFactory();
AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor();
bpp.setBeanFactory(bf);
@@ -2557,6 +2576,10 @@ public class AutowiredAnnotationBeanPostProcessorTests {
return this.testBeanFactory.getObject();
}
public TestBean getTestBean(String name) {
return this.testBeanFactory.getObject(name);
}
public TestBean getOptionalTestBean() {
return this.testBeanFactory.getIfAvailable();
}