BeanFactoryAnnotationUtils provides qualifiedBeansOfType method
Includes consistent upfront resolution of factory method annotations. Issue: SPR-8891
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2013 the original author or authors.
|
||||
* Copyright 2002-2018 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -22,6 +22,7 @@ import java.lang.annotation.RetentionPolicy;
|
||||
import org.junit.Test;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.BeanFactoryAnnotationUtils;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.beans.factory.support.RootBeanDefinition;
|
||||
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
|
||||
@@ -77,10 +78,27 @@ public class BeanMethodQualificationTests {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCustom() {
|
||||
public void testCustomWithLazyResolution() {
|
||||
AnnotationConfigApplicationContext ctx =
|
||||
new AnnotationConfigApplicationContext(CustomConfig.class, CustomPojo.class);
|
||||
assertFalse(ctx.getBeanFactory().containsSingleton("testBean1"));
|
||||
assertFalse(ctx.getBeanFactory().containsSingleton("testBean2"));
|
||||
assertTrue(BeanFactoryAnnotationUtils.isQualifierMatch(value -> value.equals("boring"),
|
||||
"testBean2", ctx.getDefaultListableBeanFactory()));
|
||||
CustomPojo pojo = ctx.getBean(CustomPojo.class);
|
||||
assertThat(pojo.testBean.getName(), equalTo("interesting"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCustomWithEarlyResolution() {
|
||||
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();
|
||||
ctx.register(CustomConfig.class, CustomPojo.class);
|
||||
ctx.refresh();
|
||||
assertFalse(ctx.getBeanFactory().containsSingleton("testBean1"));
|
||||
assertFalse(ctx.getBeanFactory().containsSingleton("testBean2"));
|
||||
ctx.getBean("testBean2");
|
||||
assertTrue(BeanFactoryAnnotationUtils.isQualifierMatch(value -> value.equals("boring"),
|
||||
"testBean2", ctx.getDefaultListableBeanFactory()));
|
||||
CustomPojo pojo = ctx.getBean(CustomPojo.class);
|
||||
assertThat(pojo.testBean.getName(), equalTo("interesting"));
|
||||
}
|
||||
@@ -94,6 +112,7 @@ public class BeanMethodQualificationTests {
|
||||
ctx.registerBeanDefinition("customPojo", customPojo);
|
||||
ctx.refresh();
|
||||
assertFalse(ctx.getBeanFactory().containsSingleton("testBean1"));
|
||||
assertFalse(ctx.getBeanFactory().containsSingleton("testBean2"));
|
||||
CustomPojo pojo = ctx.getBean(CustomPojo.class);
|
||||
assertThat(pojo.testBean.getName(), equalTo("interesting"));
|
||||
}
|
||||
@@ -171,7 +190,7 @@ public class BeanMethodQualificationTests {
|
||||
return new TestBean("interesting");
|
||||
}
|
||||
|
||||
@Bean @Qualifier("boring")
|
||||
@Bean @Qualifier("boring") @Lazy
|
||||
public TestBean testBean2() {
|
||||
return new TestBean("boring");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user