Polishing
This commit is contained in:
parent
ddee309e11
commit
3b506e11a1
|
@ -82,8 +82,8 @@ public class QualifierAnnotationAutowireCandidateResolver extends GenericTypeAwa
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a new QualifierAnnotationAutowireCandidateResolver
|
* Create a new {@code QualifierAnnotationAutowireCandidateResolver} for the given
|
||||||
* for the given qualifier annotation type.
|
* qualifier annotation type.
|
||||||
* @param qualifierType the qualifier annotation to look for
|
* @param qualifierType the qualifier annotation to look for
|
||||||
*/
|
*/
|
||||||
public QualifierAnnotationAutowireCandidateResolver(Class<? extends Annotation> qualifierType) {
|
public QualifierAnnotationAutowireCandidateResolver(Class<? extends Annotation> qualifierType) {
|
||||||
|
@ -92,8 +92,8 @@ public class QualifierAnnotationAutowireCandidateResolver extends GenericTypeAwa
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a new QualifierAnnotationAutowireCandidateResolver
|
* Create a new {@code QualifierAnnotationAutowireCandidateResolver} for the given
|
||||||
* for the given qualifier annotation types.
|
* qualifier annotation types.
|
||||||
* @param qualifierTypes the qualifier annotations to look for
|
* @param qualifierTypes the qualifier annotations to look for
|
||||||
*/
|
*/
|
||||||
public QualifierAnnotationAutowireCandidateResolver(Set<Class<? extends Annotation>> qualifierTypes) {
|
public QualifierAnnotationAutowireCandidateResolver(Set<Class<? extends Annotation>> qualifierTypes) {
|
||||||
|
|
|
@ -46,70 +46,71 @@ import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
|
||||||
*/
|
*/
|
||||||
class InjectAnnotationAutowireContextTests {
|
class InjectAnnotationAutowireContextTests {
|
||||||
|
|
||||||
|
private static final String PERSON1 = "person1";
|
||||||
|
|
||||||
|
private static final String PERSON2 = "person2";
|
||||||
|
|
||||||
private static final String JUERGEN = "juergen";
|
private static final String JUERGEN = "juergen";
|
||||||
|
|
||||||
private static final String MARK = "mark";
|
private static final String MARK = "mark";
|
||||||
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testAutowiredFieldWithSingleNonQualifiedCandidate() {
|
void autowiredFieldWithSingleNonQualifiedCandidate() {
|
||||||
GenericApplicationContext context = new GenericApplicationContext();
|
GenericApplicationContext context = new GenericApplicationContext();
|
||||||
ConstructorArgumentValues cavs = new ConstructorArgumentValues();
|
ConstructorArgumentValues cavs = new ConstructorArgumentValues();
|
||||||
cavs.addGenericArgumentValue(JUERGEN);
|
cavs.addGenericArgumentValue(JUERGEN);
|
||||||
RootBeanDefinition person = new RootBeanDefinition(Person.class, cavs, null);
|
RootBeanDefinition person = new RootBeanDefinition(Person.class, cavs, null);
|
||||||
context.registerBeanDefinition(JUERGEN, person);
|
context.registerBeanDefinition(PERSON1, person);
|
||||||
context.registerBeanDefinition("autowired",
|
context.registerBeanDefinition("autowired", new RootBeanDefinition(QualifiedFieldTestBean.class));
|
||||||
new RootBeanDefinition(QualifiedFieldTestBean.class));
|
|
||||||
AnnotationConfigUtils.registerAnnotationConfigProcessors(context);
|
AnnotationConfigUtils.registerAnnotationConfigProcessors(context);
|
||||||
assertThatExceptionOfType(BeanCreationException.class).isThrownBy(
|
assertThatExceptionOfType(BeanCreationException.class)
|
||||||
context::refresh)
|
.isThrownBy(context::refresh)
|
||||||
.satisfies(ex -> {
|
.satisfies(ex -> {
|
||||||
assertThat(ex.getRootCause()).isInstanceOf(NoSuchBeanDefinitionException.class);
|
assertThat(ex.getRootCause()).isInstanceOf(NoSuchBeanDefinitionException.class);
|
||||||
assertThat(ex.getBeanName()).isEqualTo("autowired");
|
assertThat(ex.getBeanName()).isEqualTo("autowired");
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testAutowiredMethodParameterWithSingleNonQualifiedCandidate() {
|
void autowiredMethodParameterWithSingleNonQualifiedCandidate() {
|
||||||
GenericApplicationContext context = new GenericApplicationContext();
|
GenericApplicationContext context = new GenericApplicationContext();
|
||||||
ConstructorArgumentValues cavs = new ConstructorArgumentValues();
|
ConstructorArgumentValues cavs = new ConstructorArgumentValues();
|
||||||
cavs.addGenericArgumentValue(JUERGEN);
|
cavs.addGenericArgumentValue(JUERGEN);
|
||||||
RootBeanDefinition person = new RootBeanDefinition(Person.class, cavs, null);
|
RootBeanDefinition person = new RootBeanDefinition(Person.class, cavs, null);
|
||||||
context.registerBeanDefinition(JUERGEN, person);
|
context.registerBeanDefinition(PERSON1, person);
|
||||||
context.registerBeanDefinition("autowired",
|
context.registerBeanDefinition("autowired", new RootBeanDefinition(QualifiedMethodParameterTestBean.class));
|
||||||
new RootBeanDefinition(QualifiedMethodParameterTestBean.class));
|
|
||||||
AnnotationConfigUtils.registerAnnotationConfigProcessors(context);
|
AnnotationConfigUtils.registerAnnotationConfigProcessors(context);
|
||||||
assertThatExceptionOfType(BeanCreationException.class).isThrownBy(
|
assertThatExceptionOfType(BeanCreationException.class)
|
||||||
context::refresh)
|
.isThrownBy(context::refresh)
|
||||||
.satisfies(ex -> {
|
.satisfies(ex -> {
|
||||||
assertThat(ex.getRootCause()).isInstanceOf(NoSuchBeanDefinitionException.class);
|
assertThat(ex.getRootCause()).isInstanceOf(NoSuchBeanDefinitionException.class);
|
||||||
assertThat(ex.getBeanName()).isEqualTo("autowired");
|
assertThat(ex.getBeanName()).isEqualTo("autowired");
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testAutowiredConstructorArgumentWithSingleNonQualifiedCandidate() {
|
void autowiredConstructorArgumentWithSingleNonQualifiedCandidate() {
|
||||||
GenericApplicationContext context = new GenericApplicationContext();
|
GenericApplicationContext context = new GenericApplicationContext();
|
||||||
ConstructorArgumentValues cavs = new ConstructorArgumentValues();
|
ConstructorArgumentValues cavs = new ConstructorArgumentValues();
|
||||||
cavs.addGenericArgumentValue(JUERGEN);
|
cavs.addGenericArgumentValue(JUERGEN);
|
||||||
RootBeanDefinition person = new RootBeanDefinition(Person.class, cavs, null);
|
RootBeanDefinition person = new RootBeanDefinition(Person.class, cavs, null);
|
||||||
context.registerBeanDefinition(JUERGEN, person);
|
context.registerBeanDefinition(PERSON1, person);
|
||||||
context.registerBeanDefinition("autowired",
|
context.registerBeanDefinition("autowired", new RootBeanDefinition(QualifiedConstructorArgumentTestBean.class));
|
||||||
new RootBeanDefinition(QualifiedConstructorArgumentTestBean.class));
|
|
||||||
AnnotationConfigUtils.registerAnnotationConfigProcessors(context);
|
AnnotationConfigUtils.registerAnnotationConfigProcessors(context);
|
||||||
assertThatExceptionOfType(UnsatisfiedDependencyException.class).isThrownBy(
|
assertThatExceptionOfType(UnsatisfiedDependencyException.class)
|
||||||
context::refresh)
|
.isThrownBy(context::refresh)
|
||||||
.satisfies(ex -> assertThat(ex.getBeanName()).isEqualTo("autowired"));
|
.satisfies(ex -> assertThat(ex.getBeanName()).isEqualTo("autowired"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testAutowiredFieldWithSingleQualifiedCandidate() {
|
void autowiredFieldWithSingleQualifiedCandidate() {
|
||||||
GenericApplicationContext context = new GenericApplicationContext();
|
GenericApplicationContext context = new GenericApplicationContext();
|
||||||
ConstructorArgumentValues cavs = new ConstructorArgumentValues();
|
ConstructorArgumentValues cavs = new ConstructorArgumentValues();
|
||||||
cavs.addGenericArgumentValue(JUERGEN);
|
cavs.addGenericArgumentValue(JUERGEN);
|
||||||
RootBeanDefinition person = new RootBeanDefinition(Person.class, cavs, null);
|
RootBeanDefinition person = new RootBeanDefinition(Person.class, cavs, null);
|
||||||
person.addQualifier(new AutowireCandidateQualifier(TestQualifier.class));
|
person.addQualifier(new AutowireCandidateQualifier(TestQualifier.class));
|
||||||
context.registerBeanDefinition(JUERGEN, person);
|
context.registerBeanDefinition(PERSON1, person);
|
||||||
context.registerBeanDefinition("autowired", new RootBeanDefinition(QualifiedFieldTestBean.class));
|
context.registerBeanDefinition("autowired", new RootBeanDefinition(QualifiedFieldTestBean.class));
|
||||||
AnnotationConfigUtils.registerAnnotationConfigProcessors(context);
|
AnnotationConfigUtils.registerAnnotationConfigProcessors(context);
|
||||||
context.refresh();
|
context.refresh();
|
||||||
|
@ -118,15 +119,14 @@ class InjectAnnotationAutowireContextTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testAutowiredMethodParameterWithSingleQualifiedCandidate() {
|
void autowiredMethodParameterWithSingleQualifiedCandidate() {
|
||||||
GenericApplicationContext context = new GenericApplicationContext();
|
GenericApplicationContext context = new GenericApplicationContext();
|
||||||
ConstructorArgumentValues cavs = new ConstructorArgumentValues();
|
ConstructorArgumentValues cavs = new ConstructorArgumentValues();
|
||||||
cavs.addGenericArgumentValue(JUERGEN);
|
cavs.addGenericArgumentValue(JUERGEN);
|
||||||
RootBeanDefinition person = new RootBeanDefinition(Person.class, cavs, null);
|
RootBeanDefinition person = new RootBeanDefinition(Person.class, cavs, null);
|
||||||
person.addQualifier(new AutowireCandidateQualifier(TestQualifier.class));
|
person.addQualifier(new AutowireCandidateQualifier(TestQualifier.class));
|
||||||
context.registerBeanDefinition(JUERGEN, person);
|
context.registerBeanDefinition(PERSON1, person);
|
||||||
context.registerBeanDefinition("autowired",
|
context.registerBeanDefinition("autowired", new RootBeanDefinition(QualifiedMethodParameterTestBean.class));
|
||||||
new RootBeanDefinition(QualifiedMethodParameterTestBean.class));
|
|
||||||
AnnotationConfigUtils.registerAnnotationConfigProcessors(context);
|
AnnotationConfigUtils.registerAnnotationConfigProcessors(context);
|
||||||
context.refresh();
|
context.refresh();
|
||||||
QualifiedMethodParameterTestBean bean =
|
QualifiedMethodParameterTestBean bean =
|
||||||
|
@ -135,15 +135,14 @@ class InjectAnnotationAutowireContextTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testAutowiredMethodParameterWithStaticallyQualifiedCandidate() {
|
void autowiredMethodParameterWithStaticallyQualifiedCandidate() {
|
||||||
GenericApplicationContext context = new GenericApplicationContext();
|
GenericApplicationContext context = new GenericApplicationContext();
|
||||||
ConstructorArgumentValues cavs = new ConstructorArgumentValues();
|
ConstructorArgumentValues cavs = new ConstructorArgumentValues();
|
||||||
cavs.addGenericArgumentValue(JUERGEN);
|
cavs.addGenericArgumentValue(JUERGEN);
|
||||||
RootBeanDefinition person = new RootBeanDefinition(QualifiedPerson.class, cavs, null);
|
RootBeanDefinition person = new RootBeanDefinition(QualifiedPerson.class, cavs, null);
|
||||||
context.registerBeanDefinition(JUERGEN,
|
context.registerBeanDefinition(PERSON1,
|
||||||
ScopedProxyUtils.createScopedProxy(new BeanDefinitionHolder(person, JUERGEN), context, true).getBeanDefinition());
|
ScopedProxyUtils.createScopedProxy(new BeanDefinitionHolder(person, JUERGEN), context, true).getBeanDefinition());
|
||||||
context.registerBeanDefinition("autowired",
|
context.registerBeanDefinition("autowired", new RootBeanDefinition(QualifiedMethodParameterTestBean.class));
|
||||||
new RootBeanDefinition(QualifiedMethodParameterTestBean.class));
|
|
||||||
AnnotationConfigUtils.registerAnnotationConfigProcessors(context);
|
AnnotationConfigUtils.registerAnnotationConfigProcessors(context);
|
||||||
context.refresh();
|
context.refresh();
|
||||||
QualifiedMethodParameterTestBean bean =
|
QualifiedMethodParameterTestBean bean =
|
||||||
|
@ -152,18 +151,17 @@ class InjectAnnotationAutowireContextTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testAutowiredMethodParameterWithStaticallyQualifiedCandidateAmongOthers() {
|
void autowiredMethodParameterWithStaticallyQualifiedCandidateAmongOthers() {
|
||||||
GenericApplicationContext context = new GenericApplicationContext();
|
GenericApplicationContext context = new GenericApplicationContext();
|
||||||
ConstructorArgumentValues cavs = new ConstructorArgumentValues();
|
ConstructorArgumentValues cavs = new ConstructorArgumentValues();
|
||||||
cavs.addGenericArgumentValue(JUERGEN);
|
cavs.addGenericArgumentValue(JUERGEN);
|
||||||
RootBeanDefinition person = new RootBeanDefinition(QualifiedPerson.class, cavs, null);
|
RootBeanDefinition person1 = new RootBeanDefinition(QualifiedPerson.class, cavs, null);
|
||||||
ConstructorArgumentValues cavs2 = new ConstructorArgumentValues();
|
ConstructorArgumentValues cavs2 = new ConstructorArgumentValues();
|
||||||
cavs2.addGenericArgumentValue(MARK);
|
cavs2.addGenericArgumentValue(MARK);
|
||||||
RootBeanDefinition person2 = new RootBeanDefinition(Person.class, cavs2, null);
|
RootBeanDefinition person2 = new RootBeanDefinition(Person.class, cavs2, null);
|
||||||
context.registerBeanDefinition(JUERGEN, person);
|
context.registerBeanDefinition(PERSON1, person1);
|
||||||
context.registerBeanDefinition(MARK, person2);
|
context.registerBeanDefinition(PERSON2, person2);
|
||||||
context.registerBeanDefinition("autowired",
|
context.registerBeanDefinition("autowired", new RootBeanDefinition(QualifiedMethodParameterTestBean.class));
|
||||||
new RootBeanDefinition(QualifiedMethodParameterTestBean.class));
|
|
||||||
AnnotationConfigUtils.registerAnnotationConfigProcessors(context);
|
AnnotationConfigUtils.registerAnnotationConfigProcessors(context);
|
||||||
context.refresh();
|
context.refresh();
|
||||||
QualifiedMethodParameterTestBean bean =
|
QualifiedMethodParameterTestBean bean =
|
||||||
|
@ -172,15 +170,14 @@ class InjectAnnotationAutowireContextTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testAutowiredConstructorArgumentWithSingleQualifiedCandidate() {
|
void autowiredConstructorArgumentWithSingleQualifiedCandidate() {
|
||||||
GenericApplicationContext context = new GenericApplicationContext();
|
GenericApplicationContext context = new GenericApplicationContext();
|
||||||
ConstructorArgumentValues cavs = new ConstructorArgumentValues();
|
ConstructorArgumentValues cavs = new ConstructorArgumentValues();
|
||||||
cavs.addGenericArgumentValue(JUERGEN);
|
cavs.addGenericArgumentValue(JUERGEN);
|
||||||
RootBeanDefinition person = new RootBeanDefinition(Person.class, cavs, null);
|
RootBeanDefinition person = new RootBeanDefinition(Person.class, cavs, null);
|
||||||
person.addQualifier(new AutowireCandidateQualifier(TestQualifier.class));
|
person.addQualifier(new AutowireCandidateQualifier(TestQualifier.class));
|
||||||
context.registerBeanDefinition(JUERGEN, person);
|
context.registerBeanDefinition(PERSON1, person);
|
||||||
context.registerBeanDefinition("autowired",
|
context.registerBeanDefinition("autowired", new RootBeanDefinition(QualifiedConstructorArgumentTestBean.class));
|
||||||
new RootBeanDefinition(QualifiedConstructorArgumentTestBean.class));
|
|
||||||
AnnotationConfigUtils.registerAnnotationConfigProcessors(context);
|
AnnotationConfigUtils.registerAnnotationConfigProcessors(context);
|
||||||
context.refresh();
|
context.refresh();
|
||||||
QualifiedConstructorArgumentTestBean bean =
|
QualifiedConstructorArgumentTestBean bean =
|
||||||
|
@ -189,7 +186,7 @@ class InjectAnnotationAutowireContextTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testAutowiredFieldWithMultipleNonQualifiedCandidates() {
|
void autowiredFieldWithMultipleNonQualifiedCandidates() {
|
||||||
GenericApplicationContext context = new GenericApplicationContext();
|
GenericApplicationContext context = new GenericApplicationContext();
|
||||||
ConstructorArgumentValues cavs1 = new ConstructorArgumentValues();
|
ConstructorArgumentValues cavs1 = new ConstructorArgumentValues();
|
||||||
cavs1.addGenericArgumentValue(JUERGEN);
|
cavs1.addGenericArgumentValue(JUERGEN);
|
||||||
|
@ -197,21 +194,20 @@ class InjectAnnotationAutowireContextTests {
|
||||||
ConstructorArgumentValues cavs2 = new ConstructorArgumentValues();
|
ConstructorArgumentValues cavs2 = new ConstructorArgumentValues();
|
||||||
cavs2.addGenericArgumentValue(MARK);
|
cavs2.addGenericArgumentValue(MARK);
|
||||||
RootBeanDefinition person2 = new RootBeanDefinition(Person.class, cavs2, null);
|
RootBeanDefinition person2 = new RootBeanDefinition(Person.class, cavs2, null);
|
||||||
context.registerBeanDefinition(JUERGEN, person1);
|
context.registerBeanDefinition(PERSON1, person1);
|
||||||
context.registerBeanDefinition(MARK, person2);
|
context.registerBeanDefinition(PERSON2, person2);
|
||||||
context.registerBeanDefinition("autowired",
|
context.registerBeanDefinition("autowired", new RootBeanDefinition(QualifiedFieldTestBean.class));
|
||||||
new RootBeanDefinition(QualifiedFieldTestBean.class));
|
|
||||||
AnnotationConfigUtils.registerAnnotationConfigProcessors(context);
|
AnnotationConfigUtils.registerAnnotationConfigProcessors(context);
|
||||||
assertThatExceptionOfType(BeanCreationException.class).isThrownBy(
|
assertThatExceptionOfType(BeanCreationException.class)
|
||||||
context::refresh)
|
.isThrownBy(context::refresh)
|
||||||
.satisfies(ex -> {
|
.satisfies(ex -> {
|
||||||
assertThat(ex.getRootCause()).isInstanceOf(NoSuchBeanDefinitionException.class);
|
assertThat(ex.getRootCause()).isInstanceOf(NoSuchBeanDefinitionException.class);
|
||||||
assertThat(ex.getBeanName()).isEqualTo("autowired");
|
assertThat(ex.getBeanName()).isEqualTo("autowired");
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testAutowiredMethodParameterWithMultipleNonQualifiedCandidates() {
|
void autowiredMethodParameterWithMultipleNonQualifiedCandidates() {
|
||||||
GenericApplicationContext context = new GenericApplicationContext();
|
GenericApplicationContext context = new GenericApplicationContext();
|
||||||
ConstructorArgumentValues cavs1 = new ConstructorArgumentValues();
|
ConstructorArgumentValues cavs1 = new ConstructorArgumentValues();
|
||||||
cavs1.addGenericArgumentValue(JUERGEN);
|
cavs1.addGenericArgumentValue(JUERGEN);
|
||||||
|
@ -219,21 +215,20 @@ class InjectAnnotationAutowireContextTests {
|
||||||
ConstructorArgumentValues cavs2 = new ConstructorArgumentValues();
|
ConstructorArgumentValues cavs2 = new ConstructorArgumentValues();
|
||||||
cavs2.addGenericArgumentValue(MARK);
|
cavs2.addGenericArgumentValue(MARK);
|
||||||
RootBeanDefinition person2 = new RootBeanDefinition(Person.class, cavs2, null);
|
RootBeanDefinition person2 = new RootBeanDefinition(Person.class, cavs2, null);
|
||||||
context.registerBeanDefinition(JUERGEN, person1);
|
context.registerBeanDefinition(PERSON1, person1);
|
||||||
context.registerBeanDefinition(MARK, person2);
|
context.registerBeanDefinition(PERSON2, person2);
|
||||||
context.registerBeanDefinition("autowired",
|
context.registerBeanDefinition("autowired", new RootBeanDefinition(QualifiedMethodParameterTestBean.class));
|
||||||
new RootBeanDefinition(QualifiedMethodParameterTestBean.class));
|
|
||||||
AnnotationConfigUtils.registerAnnotationConfigProcessors(context);
|
AnnotationConfigUtils.registerAnnotationConfigProcessors(context);
|
||||||
assertThatExceptionOfType(BeanCreationException.class).isThrownBy(
|
assertThatExceptionOfType(BeanCreationException.class)
|
||||||
context::refresh)
|
.isThrownBy(context::refresh)
|
||||||
.satisfies(ex -> {
|
.satisfies(ex -> {
|
||||||
assertThat(ex.getRootCause()).isInstanceOf(NoSuchBeanDefinitionException.class);
|
assertThat(ex.getRootCause()).isInstanceOf(NoSuchBeanDefinitionException.class);
|
||||||
assertThat(ex.getBeanName()).isEqualTo("autowired");
|
assertThat(ex.getBeanName()).isEqualTo("autowired");
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testAutowiredConstructorArgumentWithMultipleNonQualifiedCandidates() {
|
void autowiredConstructorArgumentWithMultipleNonQualifiedCandidates() {
|
||||||
GenericApplicationContext context = new GenericApplicationContext();
|
GenericApplicationContext context = new GenericApplicationContext();
|
||||||
ConstructorArgumentValues cavs1 = new ConstructorArgumentValues();
|
ConstructorArgumentValues cavs1 = new ConstructorArgumentValues();
|
||||||
cavs1.addGenericArgumentValue(JUERGEN);
|
cavs1.addGenericArgumentValue(JUERGEN);
|
||||||
|
@ -241,18 +236,17 @@ class InjectAnnotationAutowireContextTests {
|
||||||
ConstructorArgumentValues cavs2 = new ConstructorArgumentValues();
|
ConstructorArgumentValues cavs2 = new ConstructorArgumentValues();
|
||||||
cavs2.addGenericArgumentValue(MARK);
|
cavs2.addGenericArgumentValue(MARK);
|
||||||
RootBeanDefinition person2 = new RootBeanDefinition(Person.class, cavs2, null);
|
RootBeanDefinition person2 = new RootBeanDefinition(Person.class, cavs2, null);
|
||||||
context.registerBeanDefinition(JUERGEN, person1);
|
context.registerBeanDefinition(PERSON1, person1);
|
||||||
context.registerBeanDefinition(MARK, person2);
|
context.registerBeanDefinition(PERSON2, person2);
|
||||||
context.registerBeanDefinition("autowired",
|
context.registerBeanDefinition("autowired", new RootBeanDefinition(QualifiedConstructorArgumentTestBean.class));
|
||||||
new RootBeanDefinition(QualifiedConstructorArgumentTestBean.class));
|
|
||||||
AnnotationConfigUtils.registerAnnotationConfigProcessors(context);
|
AnnotationConfigUtils.registerAnnotationConfigProcessors(context);
|
||||||
assertThatExceptionOfType(UnsatisfiedDependencyException.class).isThrownBy(
|
assertThatExceptionOfType(UnsatisfiedDependencyException.class)
|
||||||
context::refresh)
|
.isThrownBy(context::refresh)
|
||||||
.satisfies(ex -> assertThat(ex.getBeanName()).isEqualTo("autowired"));
|
.satisfies(ex -> assertThat(ex.getBeanName()).isEqualTo("autowired"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testAutowiredFieldResolvesQualifiedCandidate() {
|
void autowiredFieldResolvesQualifiedCandidate() {
|
||||||
GenericApplicationContext context = new GenericApplicationContext();
|
GenericApplicationContext context = new GenericApplicationContext();
|
||||||
ConstructorArgumentValues cavs1 = new ConstructorArgumentValues();
|
ConstructorArgumentValues cavs1 = new ConstructorArgumentValues();
|
||||||
cavs1.addGenericArgumentValue(JUERGEN);
|
cavs1.addGenericArgumentValue(JUERGEN);
|
||||||
|
@ -261,10 +255,9 @@ class InjectAnnotationAutowireContextTests {
|
||||||
ConstructorArgumentValues cavs2 = new ConstructorArgumentValues();
|
ConstructorArgumentValues cavs2 = new ConstructorArgumentValues();
|
||||||
cavs2.addGenericArgumentValue(MARK);
|
cavs2.addGenericArgumentValue(MARK);
|
||||||
RootBeanDefinition person2 = new RootBeanDefinition(Person.class, cavs2, null);
|
RootBeanDefinition person2 = new RootBeanDefinition(Person.class, cavs2, null);
|
||||||
context.registerBeanDefinition(JUERGEN, person1);
|
context.registerBeanDefinition(PERSON1, person1);
|
||||||
context.registerBeanDefinition(MARK, person2);
|
context.registerBeanDefinition(PERSON2, person2);
|
||||||
context.registerBeanDefinition("autowired",
|
context.registerBeanDefinition("autowired", new RootBeanDefinition(QualifiedFieldTestBean.class));
|
||||||
new RootBeanDefinition(QualifiedFieldTestBean.class));
|
|
||||||
AnnotationConfigUtils.registerAnnotationConfigProcessors(context);
|
AnnotationConfigUtils.registerAnnotationConfigProcessors(context);
|
||||||
context.refresh();
|
context.refresh();
|
||||||
QualifiedFieldTestBean bean = (QualifiedFieldTestBean) context.getBean("autowired");
|
QualifiedFieldTestBean bean = (QualifiedFieldTestBean) context.getBean("autowired");
|
||||||
|
@ -272,7 +265,7 @@ class InjectAnnotationAutowireContextTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testAutowiredMethodParameterResolvesQualifiedCandidate() {
|
void autowiredMethodParameterResolvesQualifiedCandidate() {
|
||||||
GenericApplicationContext context = new GenericApplicationContext();
|
GenericApplicationContext context = new GenericApplicationContext();
|
||||||
ConstructorArgumentValues cavs1 = new ConstructorArgumentValues();
|
ConstructorArgumentValues cavs1 = new ConstructorArgumentValues();
|
||||||
cavs1.addGenericArgumentValue(JUERGEN);
|
cavs1.addGenericArgumentValue(JUERGEN);
|
||||||
|
@ -281,10 +274,9 @@ class InjectAnnotationAutowireContextTests {
|
||||||
ConstructorArgumentValues cavs2 = new ConstructorArgumentValues();
|
ConstructorArgumentValues cavs2 = new ConstructorArgumentValues();
|
||||||
cavs2.addGenericArgumentValue(MARK);
|
cavs2.addGenericArgumentValue(MARK);
|
||||||
RootBeanDefinition person2 = new RootBeanDefinition(Person.class, cavs2, null);
|
RootBeanDefinition person2 = new RootBeanDefinition(Person.class, cavs2, null);
|
||||||
context.registerBeanDefinition(JUERGEN, person1);
|
context.registerBeanDefinition(PERSON1, person1);
|
||||||
context.registerBeanDefinition(MARK, person2);
|
context.registerBeanDefinition(PERSON2, person2);
|
||||||
context.registerBeanDefinition("autowired",
|
context.registerBeanDefinition("autowired", new RootBeanDefinition(QualifiedMethodParameterTestBean.class));
|
||||||
new RootBeanDefinition(QualifiedMethodParameterTestBean.class));
|
|
||||||
AnnotationConfigUtils.registerAnnotationConfigProcessors(context);
|
AnnotationConfigUtils.registerAnnotationConfigProcessors(context);
|
||||||
context.refresh();
|
context.refresh();
|
||||||
QualifiedMethodParameterTestBean bean =
|
QualifiedMethodParameterTestBean bean =
|
||||||
|
@ -293,7 +285,7 @@ class InjectAnnotationAutowireContextTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testAutowiredConstructorArgumentResolvesQualifiedCandidate() {
|
void autowiredConstructorArgumentResolvesQualifiedCandidate() {
|
||||||
GenericApplicationContext context = new GenericApplicationContext();
|
GenericApplicationContext context = new GenericApplicationContext();
|
||||||
ConstructorArgumentValues cavs1 = new ConstructorArgumentValues();
|
ConstructorArgumentValues cavs1 = new ConstructorArgumentValues();
|
||||||
cavs1.addGenericArgumentValue(JUERGEN);
|
cavs1.addGenericArgumentValue(JUERGEN);
|
||||||
|
@ -302,10 +294,9 @@ class InjectAnnotationAutowireContextTests {
|
||||||
ConstructorArgumentValues cavs2 = new ConstructorArgumentValues();
|
ConstructorArgumentValues cavs2 = new ConstructorArgumentValues();
|
||||||
cavs2.addGenericArgumentValue(MARK);
|
cavs2.addGenericArgumentValue(MARK);
|
||||||
RootBeanDefinition person2 = new RootBeanDefinition(Person.class, cavs2, null);
|
RootBeanDefinition person2 = new RootBeanDefinition(Person.class, cavs2, null);
|
||||||
context.registerBeanDefinition(JUERGEN, person1);
|
context.registerBeanDefinition(PERSON1, person1);
|
||||||
context.registerBeanDefinition(MARK, person2);
|
context.registerBeanDefinition(PERSON2, person2);
|
||||||
context.registerBeanDefinition("autowired",
|
context.registerBeanDefinition("autowired", new RootBeanDefinition(QualifiedConstructorArgumentTestBean.class));
|
||||||
new RootBeanDefinition(QualifiedConstructorArgumentTestBean.class));
|
|
||||||
AnnotationConfigUtils.registerAnnotationConfigProcessors(context);
|
AnnotationConfigUtils.registerAnnotationConfigProcessors(context);
|
||||||
context.refresh();
|
context.refresh();
|
||||||
QualifiedConstructorArgumentTestBean bean =
|
QualifiedConstructorArgumentTestBean bean =
|
||||||
|
@ -314,7 +305,7 @@ class InjectAnnotationAutowireContextTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testAutowiredFieldResolvesQualifiedCandidateWithDefaultValueAndNoValueOnBeanDefinition() {
|
void autowiredFieldResolvesQualifiedCandidateWithDefaultValueAndNoValueOnBeanDefinition() {
|
||||||
GenericApplicationContext context = new GenericApplicationContext();
|
GenericApplicationContext context = new GenericApplicationContext();
|
||||||
ConstructorArgumentValues cavs1 = new ConstructorArgumentValues();
|
ConstructorArgumentValues cavs1 = new ConstructorArgumentValues();
|
||||||
cavs1.addGenericArgumentValue(JUERGEN);
|
cavs1.addGenericArgumentValue(JUERGEN);
|
||||||
|
@ -324,10 +315,9 @@ class InjectAnnotationAutowireContextTests {
|
||||||
ConstructorArgumentValues cavs2 = new ConstructorArgumentValues();
|
ConstructorArgumentValues cavs2 = new ConstructorArgumentValues();
|
||||||
cavs2.addGenericArgumentValue(MARK);
|
cavs2.addGenericArgumentValue(MARK);
|
||||||
RootBeanDefinition person2 = new RootBeanDefinition(Person.class, cavs2, null);
|
RootBeanDefinition person2 = new RootBeanDefinition(Person.class, cavs2, null);
|
||||||
context.registerBeanDefinition(JUERGEN, person1);
|
context.registerBeanDefinition(PERSON1, person1);
|
||||||
context.registerBeanDefinition(MARK, person2);
|
context.registerBeanDefinition(PERSON2, person2);
|
||||||
context.registerBeanDefinition("autowired",
|
context.registerBeanDefinition("autowired", new RootBeanDefinition(QualifiedFieldWithDefaultValueTestBean.class));
|
||||||
new RootBeanDefinition(QualifiedFieldWithDefaultValueTestBean.class));
|
|
||||||
AnnotationConfigUtils.registerAnnotationConfigProcessors(context);
|
AnnotationConfigUtils.registerAnnotationConfigProcessors(context);
|
||||||
context.refresh();
|
context.refresh();
|
||||||
QualifiedFieldWithDefaultValueTestBean bean =
|
QualifiedFieldWithDefaultValueTestBean bean =
|
||||||
|
@ -336,7 +326,7 @@ class InjectAnnotationAutowireContextTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testAutowiredFieldDoesNotResolveCandidateWithDefaultValueAndConflictingValueOnBeanDefinition() {
|
void autowiredFieldDoesNotResolveCandidateWithDefaultValueAndConflictingValueOnBeanDefinition() {
|
||||||
GenericApplicationContext context = new GenericApplicationContext();
|
GenericApplicationContext context = new GenericApplicationContext();
|
||||||
ConstructorArgumentValues cavs1 = new ConstructorArgumentValues();
|
ConstructorArgumentValues cavs1 = new ConstructorArgumentValues();
|
||||||
cavs1.addGenericArgumentValue(JUERGEN);
|
cavs1.addGenericArgumentValue(JUERGEN);
|
||||||
|
@ -346,21 +336,20 @@ class InjectAnnotationAutowireContextTests {
|
||||||
ConstructorArgumentValues cavs2 = new ConstructorArgumentValues();
|
ConstructorArgumentValues cavs2 = new ConstructorArgumentValues();
|
||||||
cavs2.addGenericArgumentValue(MARK);
|
cavs2.addGenericArgumentValue(MARK);
|
||||||
RootBeanDefinition person2 = new RootBeanDefinition(Person.class, cavs2, null);
|
RootBeanDefinition person2 = new RootBeanDefinition(Person.class, cavs2, null);
|
||||||
context.registerBeanDefinition(JUERGEN, person1);
|
context.registerBeanDefinition(PERSON1, person1);
|
||||||
context.registerBeanDefinition(MARK, person2);
|
context.registerBeanDefinition(PERSON2, person2);
|
||||||
context.registerBeanDefinition("autowired",
|
context.registerBeanDefinition("autowired", new RootBeanDefinition(QualifiedFieldWithDefaultValueTestBean.class));
|
||||||
new RootBeanDefinition(QualifiedFieldWithDefaultValueTestBean.class));
|
|
||||||
AnnotationConfigUtils.registerAnnotationConfigProcessors(context);
|
AnnotationConfigUtils.registerAnnotationConfigProcessors(context);
|
||||||
assertThatExceptionOfType(BeanCreationException.class).isThrownBy(
|
assertThatExceptionOfType(BeanCreationException.class)
|
||||||
context::refresh)
|
.isThrownBy(context::refresh)
|
||||||
.satisfies(ex -> {
|
.satisfies(ex -> {
|
||||||
assertThat(ex.getRootCause()).isInstanceOf(NoSuchBeanDefinitionException.class);
|
assertThat(ex.getRootCause()).isInstanceOf(NoSuchBeanDefinitionException.class);
|
||||||
assertThat(ex.getBeanName()).isEqualTo("autowired");
|
assertThat(ex.getBeanName()).isEqualTo("autowired");
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testAutowiredFieldResolvesWithDefaultValueAndExplicitDefaultValueOnBeanDefinition() {
|
void autowiredFieldResolvesWithDefaultValueAndExplicitDefaultValueOnBeanDefinition() {
|
||||||
GenericApplicationContext context = new GenericApplicationContext();
|
GenericApplicationContext context = new GenericApplicationContext();
|
||||||
ConstructorArgumentValues cavs1 = new ConstructorArgumentValues();
|
ConstructorArgumentValues cavs1 = new ConstructorArgumentValues();
|
||||||
cavs1.addGenericArgumentValue(JUERGEN);
|
cavs1.addGenericArgumentValue(JUERGEN);
|
||||||
|
@ -370,10 +359,9 @@ class InjectAnnotationAutowireContextTests {
|
||||||
ConstructorArgumentValues cavs2 = new ConstructorArgumentValues();
|
ConstructorArgumentValues cavs2 = new ConstructorArgumentValues();
|
||||||
cavs2.addGenericArgumentValue(MARK);
|
cavs2.addGenericArgumentValue(MARK);
|
||||||
RootBeanDefinition person2 = new RootBeanDefinition(Person.class, cavs2, null);
|
RootBeanDefinition person2 = new RootBeanDefinition(Person.class, cavs2, null);
|
||||||
context.registerBeanDefinition(JUERGEN, person1);
|
context.registerBeanDefinition(PERSON1, person1);
|
||||||
context.registerBeanDefinition(MARK, person2);
|
context.registerBeanDefinition(PERSON2, person2);
|
||||||
context.registerBeanDefinition("autowired",
|
context.registerBeanDefinition("autowired", new RootBeanDefinition(QualifiedFieldWithDefaultValueTestBean.class));
|
||||||
new RootBeanDefinition(QualifiedFieldWithDefaultValueTestBean.class));
|
|
||||||
AnnotationConfigUtils.registerAnnotationConfigProcessors(context);
|
AnnotationConfigUtils.registerAnnotationConfigProcessors(context);
|
||||||
context.refresh();
|
context.refresh();
|
||||||
QualifiedFieldWithDefaultValueTestBean bean =
|
QualifiedFieldWithDefaultValueTestBean bean =
|
||||||
|
@ -382,7 +370,7 @@ class InjectAnnotationAutowireContextTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testAutowiredFieldResolvesWithMultipleQualifierValues() {
|
void autowiredFieldResolvesWithMultipleQualifierValues() {
|
||||||
GenericApplicationContext context = new GenericApplicationContext();
|
GenericApplicationContext context = new GenericApplicationContext();
|
||||||
ConstructorArgumentValues cavs1 = new ConstructorArgumentValues();
|
ConstructorArgumentValues cavs1 = new ConstructorArgumentValues();
|
||||||
cavs1.addGenericArgumentValue(JUERGEN);
|
cavs1.addGenericArgumentValue(JUERGEN);
|
||||||
|
@ -396,10 +384,9 @@ class InjectAnnotationAutowireContextTests {
|
||||||
AutowireCandidateQualifier qualifier2 = new AutowireCandidateQualifier(TestQualifierWithMultipleAttributes.class);
|
AutowireCandidateQualifier qualifier2 = new AutowireCandidateQualifier(TestQualifierWithMultipleAttributes.class);
|
||||||
qualifier2.setAttribute("number", 123);
|
qualifier2.setAttribute("number", 123);
|
||||||
person2.addQualifier(qualifier2);
|
person2.addQualifier(qualifier2);
|
||||||
context.registerBeanDefinition(JUERGEN, person1);
|
context.registerBeanDefinition(PERSON1, person1);
|
||||||
context.registerBeanDefinition(MARK, person2);
|
context.registerBeanDefinition(PERSON2, person2);
|
||||||
context.registerBeanDefinition("autowired",
|
context.registerBeanDefinition("autowired", new RootBeanDefinition(QualifiedFieldWithMultipleAttributesTestBean.class));
|
||||||
new RootBeanDefinition(QualifiedFieldWithMultipleAttributesTestBean.class));
|
|
||||||
AnnotationConfigUtils.registerAnnotationConfigProcessors(context);
|
AnnotationConfigUtils.registerAnnotationConfigProcessors(context);
|
||||||
context.refresh();
|
context.refresh();
|
||||||
QualifiedFieldWithMultipleAttributesTestBean bean =
|
QualifiedFieldWithMultipleAttributesTestBean bean =
|
||||||
|
@ -408,7 +395,7 @@ class InjectAnnotationAutowireContextTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testAutowiredFieldDoesNotResolveWithMultipleQualifierValuesAndConflictingDefaultValue() {
|
void autowiredFieldDoesNotResolveWithMultipleQualifierValuesAndConflictingDefaultValue() {
|
||||||
GenericApplicationContext context = new GenericApplicationContext();
|
GenericApplicationContext context = new GenericApplicationContext();
|
||||||
ConstructorArgumentValues cavs1 = new ConstructorArgumentValues();
|
ConstructorArgumentValues cavs1 = new ConstructorArgumentValues();
|
||||||
cavs1.addGenericArgumentValue(JUERGEN);
|
cavs1.addGenericArgumentValue(JUERGEN);
|
||||||
|
@ -423,21 +410,20 @@ class InjectAnnotationAutowireContextTests {
|
||||||
qualifier2.setAttribute("number", 123);
|
qualifier2.setAttribute("number", 123);
|
||||||
qualifier2.setAttribute("value", "not the default");
|
qualifier2.setAttribute("value", "not the default");
|
||||||
person2.addQualifier(qualifier2);
|
person2.addQualifier(qualifier2);
|
||||||
context.registerBeanDefinition(JUERGEN, person1);
|
context.registerBeanDefinition(PERSON1, person1);
|
||||||
context.registerBeanDefinition(MARK, person2);
|
context.registerBeanDefinition(PERSON2, person2);
|
||||||
context.registerBeanDefinition("autowired",
|
context.registerBeanDefinition("autowired", new RootBeanDefinition(QualifiedFieldWithMultipleAttributesTestBean.class));
|
||||||
new RootBeanDefinition(QualifiedFieldWithMultipleAttributesTestBean.class));
|
|
||||||
AnnotationConfigUtils.registerAnnotationConfigProcessors(context);
|
AnnotationConfigUtils.registerAnnotationConfigProcessors(context);
|
||||||
assertThatExceptionOfType(BeanCreationException.class).isThrownBy(
|
assertThatExceptionOfType(BeanCreationException.class)
|
||||||
context::refresh)
|
.isThrownBy(context::refresh)
|
||||||
.satisfies(ex -> {
|
.satisfies(ex -> {
|
||||||
assertThat(ex.getRootCause()).isInstanceOf(NoSuchBeanDefinitionException.class);
|
assertThat(ex.getRootCause()).isInstanceOf(NoSuchBeanDefinitionException.class);
|
||||||
assertThat(ex.getBeanName()).isEqualTo("autowired");
|
assertThat(ex.getBeanName()).isEqualTo("autowired");
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testAutowiredFieldResolvesWithMultipleQualifierValuesAndExplicitDefaultValue() {
|
void autowiredFieldResolvesWithMultipleQualifierValuesAndExplicitDefaultValue() {
|
||||||
GenericApplicationContext context = new GenericApplicationContext();
|
GenericApplicationContext context = new GenericApplicationContext();
|
||||||
ConstructorArgumentValues cavs1 = new ConstructorArgumentValues();
|
ConstructorArgumentValues cavs1 = new ConstructorArgumentValues();
|
||||||
cavs1.addGenericArgumentValue(JUERGEN);
|
cavs1.addGenericArgumentValue(JUERGEN);
|
||||||
|
@ -452,10 +438,9 @@ class InjectAnnotationAutowireContextTests {
|
||||||
qualifier2.setAttribute("number", 123);
|
qualifier2.setAttribute("number", 123);
|
||||||
qualifier2.setAttribute("value", "default");
|
qualifier2.setAttribute("value", "default");
|
||||||
person2.addQualifier(qualifier2);
|
person2.addQualifier(qualifier2);
|
||||||
context.registerBeanDefinition(JUERGEN, person1);
|
context.registerBeanDefinition(PERSON1, person1);
|
||||||
context.registerBeanDefinition(MARK, person2);
|
context.registerBeanDefinition(PERSON2, person2);
|
||||||
context.registerBeanDefinition("autowired",
|
context.registerBeanDefinition("autowired", new RootBeanDefinition(QualifiedFieldWithMultipleAttributesTestBean.class));
|
||||||
new RootBeanDefinition(QualifiedFieldWithMultipleAttributesTestBean.class));
|
|
||||||
AnnotationConfigUtils.registerAnnotationConfigProcessors(context);
|
AnnotationConfigUtils.registerAnnotationConfigProcessors(context);
|
||||||
context.refresh();
|
context.refresh();
|
||||||
QualifiedFieldWithMultipleAttributesTestBean bean =
|
QualifiedFieldWithMultipleAttributesTestBean bean =
|
||||||
|
@ -464,7 +449,7 @@ class InjectAnnotationAutowireContextTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testAutowiredFieldDoesNotResolveWithMultipleQualifierValuesAndMultipleMatchingCandidates() {
|
void autowiredFieldDoesNotResolveWithMultipleQualifierValuesAndMultipleMatchingCandidates() {
|
||||||
GenericApplicationContext context = new GenericApplicationContext();
|
GenericApplicationContext context = new GenericApplicationContext();
|
||||||
ConstructorArgumentValues cavs1 = new ConstructorArgumentValues();
|
ConstructorArgumentValues cavs1 = new ConstructorArgumentValues();
|
||||||
cavs1.addGenericArgumentValue(JUERGEN);
|
cavs1.addGenericArgumentValue(JUERGEN);
|
||||||
|
@ -479,38 +464,37 @@ class InjectAnnotationAutowireContextTests {
|
||||||
qualifier2.setAttribute("number", 123);
|
qualifier2.setAttribute("number", 123);
|
||||||
qualifier2.setAttribute("value", "default");
|
qualifier2.setAttribute("value", "default");
|
||||||
person2.addQualifier(qualifier2);
|
person2.addQualifier(qualifier2);
|
||||||
context.registerBeanDefinition(JUERGEN, person1);
|
context.registerBeanDefinition(PERSON1, person1);
|
||||||
context.registerBeanDefinition(MARK, person2);
|
context.registerBeanDefinition(PERSON2, person2);
|
||||||
context.registerBeanDefinition("autowired",
|
context.registerBeanDefinition("autowired", new RootBeanDefinition(QualifiedFieldWithMultipleAttributesTestBean.class));
|
||||||
new RootBeanDefinition(QualifiedFieldWithMultipleAttributesTestBean.class));
|
|
||||||
AnnotationConfigUtils.registerAnnotationConfigProcessors(context);
|
AnnotationConfigUtils.registerAnnotationConfigProcessors(context);
|
||||||
assertThatExceptionOfType(BeanCreationException.class).isThrownBy(
|
assertThatExceptionOfType(BeanCreationException.class)
|
||||||
context::refresh)
|
.isThrownBy(context::refresh)
|
||||||
.satisfies(ex -> {
|
.satisfies(ex -> {
|
||||||
assertThat(ex.getRootCause()).isInstanceOf(NoSuchBeanDefinitionException.class);
|
assertThat(ex.getRootCause()).isInstanceOf(NoSuchBeanDefinitionException.class);
|
||||||
assertThat(ex.getBeanName()).isEqualTo("autowired");
|
assertThat(ex.getBeanName()).isEqualTo("autowired");
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testAutowiredFieldDoesNotResolveWithBaseQualifierAndNonDefaultValueAndMultipleMatchingCandidates() {
|
void autowiredConstructorArgumentDoesNotResolveWithBaseQualifierAndNonDefaultValueAndMultipleMatchingCandidates() {
|
||||||
GenericApplicationContext context = new GenericApplicationContext();
|
GenericApplicationContext context = new GenericApplicationContext();
|
||||||
ConstructorArgumentValues cavs1 = new ConstructorArgumentValues();
|
ConstructorArgumentValues cavs1 = new ConstructorArgumentValues();
|
||||||
cavs1.addGenericArgumentValue("the real juergen");
|
cavs1.addGenericArgumentValue("the real juergen");
|
||||||
RootBeanDefinition person1 = new RootBeanDefinition(Person.class, cavs1, null);
|
RootBeanDefinition person1 = new RootBeanDefinition(Person.class, cavs1, null);
|
||||||
person1.addQualifier(new AutowireCandidateQualifier(Qualifier.class, "juergen"));
|
person1.addQualifier(new AutowireCandidateQualifier(Qualifier.class, JUERGEN));
|
||||||
ConstructorArgumentValues cavs2 = new ConstructorArgumentValues();
|
ConstructorArgumentValues cavs2 = new ConstructorArgumentValues();
|
||||||
cavs2.addGenericArgumentValue("juergen imposter");
|
cavs2.addGenericArgumentValue("juergen imposter");
|
||||||
RootBeanDefinition person2 = new RootBeanDefinition(Person.class, cavs2, null);
|
RootBeanDefinition person2 = new RootBeanDefinition(Person.class, cavs2, null);
|
||||||
person2.addQualifier(new AutowireCandidateQualifier(Qualifier.class, "juergen"));
|
person2.addQualifier(new AutowireCandidateQualifier(Qualifier.class, JUERGEN));
|
||||||
context.registerBeanDefinition("juergen1", person1);
|
context.registerBeanDefinition("juergen1", person1);
|
||||||
context.registerBeanDefinition("juergen2", person2);
|
context.registerBeanDefinition("juergen2", person2);
|
||||||
context.registerBeanDefinition("autowired",
|
context.registerBeanDefinition("autowired",
|
||||||
new RootBeanDefinition(QualifiedConstructorArgumentWithBaseQualifierNonDefaultValueTestBean.class));
|
new RootBeanDefinition(QualifiedConstructorArgumentWithBaseQualifierNonDefaultValueTestBean.class));
|
||||||
AnnotationConfigUtils.registerAnnotationConfigProcessors(context);
|
AnnotationConfigUtils.registerAnnotationConfigProcessors(context);
|
||||||
assertThatExceptionOfType(UnsatisfiedDependencyException.class).isThrownBy(
|
assertThatExceptionOfType(UnsatisfiedDependencyException.class)
|
||||||
context::refresh)
|
.isThrownBy(context::refresh)
|
||||||
.satisfies(ex -> assertThat(ex.getBeanName()).isEqualTo("autowired"));
|
.satisfies(ex -> assertThat(ex.getBeanName()).isEqualTo("autowired"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -543,7 +527,7 @@ class InjectAnnotationAutowireContextTests {
|
||||||
|
|
||||||
private static class QualifiedConstructorArgumentTestBean {
|
private static class QualifiedConstructorArgumentTestBean {
|
||||||
|
|
||||||
private Person person;
|
private final Person person;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public QualifiedConstructorArgumentTestBean(@TestQualifier Person person) {
|
public QualifiedConstructorArgumentTestBean(@TestQualifier Person person) {
|
||||||
|
@ -593,13 +577,13 @@ class InjectAnnotationAutowireContextTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public static class QualifiedConstructorArgumentWithBaseQualifierNonDefaultValueTestBean {
|
static class QualifiedConstructorArgumentWithBaseQualifierNonDefaultValueTestBean {
|
||||||
|
|
||||||
private Person person;
|
private Person person;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public QualifiedConstructorArgumentWithBaseQualifierNonDefaultValueTestBean(
|
public QualifiedConstructorArgumentWithBaseQualifierNonDefaultValueTestBean(
|
||||||
@Named("juergen") Person person) {
|
@Named(JUERGEN) Person person) {
|
||||||
this.person = person;
|
this.person = person;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue