Collection injection may refer back to factory methods on same bean again

Issue: SPR-14996
This commit is contained in:
Juergen Hoeller
2016-12-09 23:09:10 +01:00
parent aa29495d1d
commit 547b9638dc
2 changed files with 41 additions and 17 deletions

View File

@@ -20,6 +20,7 @@ import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.util.List;
import javax.annotation.PostConstruct;
import org.junit.Before;
@@ -615,6 +616,15 @@ public class ConfigurationClassPostProcessorTests {
assertSame(ctx.getBean(BarImpl.class), ctx.getBean(FooImpl.class).bar);
}
@Test
public void testCollectionInjectionFromSameConfigurationClass() {
ApplicationContext ctx = new AnnotationConfigApplicationContext(CollectionInjectionConfiguration.class);
CollectionInjectionConfiguration bean = ctx.getBean(CollectionInjectionConfiguration.class);
assertNotNull(bean.testBeans);
assertEquals(1, bean.testBeans.size());
assertSame(ctx.getBean(TestBean.class), bean.testBeans.get(0));
}
// -------------------------------------------------------------------------
@@ -1253,4 +1263,16 @@ public class ConfigurationClassPostProcessorTests {
}
}
@Configuration
static class CollectionInjectionConfiguration {
@Autowired(required = false)
public List<TestBean> testBeans;
@Bean
public TestBean thing() {
return new TestBean();
}
}
}