Consistently evaluate defaultCandidate flag on constructors and methods

Closes gh-33762
This commit is contained in:
Juergen Hoeller
2024-10-21 13:53:28 +02:00
parent 6f9413ba31
commit ee1fe8a1e9
2 changed files with 74 additions and 12 deletions

View File

@@ -195,6 +195,28 @@ class BeanMethodQualificationTests {
ctx.close();
}
@Test
void customWithConstructor() {
AnnotationConfigApplicationContext ctx = context(CustomConfig.class, CustomPojoWithConstructor.class);
CustomPojoWithConstructor pojo = ctx.getBean(CustomPojoWithConstructor.class);
assertThat(pojo.plainBean).isNull();
assertThat(pojo.testBean.getName()).isEqualTo("interesting");
ctx.close();
}
@Test
void customWithMethod() {
AnnotationConfigApplicationContext ctx = context(CustomConfig.class, CustomPojoWithMethod.class);
CustomPojoWithMethod pojo = ctx.getBean(CustomPojoWithMethod.class);
assertThat(pojo.plainBean).isNull();
assertThat(pojo.testBean.getName()).isEqualTo("interesting");
ctx.close();
}
@Test
void beanNamesForAnnotation() {
AnnotationConfigApplicationContext ctx = context(StandardConfig.class);
@@ -327,6 +349,7 @@ class BeanMethodQualificationTests {
}
}
@Configuration
static class EffectivePrimaryConfig {
@@ -346,6 +369,7 @@ class BeanMethodQualificationTests {
}
}
@Component @Lazy
static class StandardPojo {
@@ -418,6 +442,35 @@ class BeanMethodQualificationTests {
}
@InterestingPojo
static class CustomPojoWithConstructor {
TestBean plainBean;
TestBean testBean;
public CustomPojoWithConstructor(Optional<TestBean> plainBean, @InterestingNeed TestBean testBean) {
this.plainBean = plainBean.orElse(null);
this.testBean = testBean;
}
}
@InterestingPojo
static class CustomPojoWithMethod {
TestBean plainBean;
TestBean testBean;
@Autowired
public void applyDependencies(Optional<TestBean> plainBean, @InterestingNeed TestBean testBean) {
this.plainBean = plainBean.orElse(null);
this.testBean = testBean;
}
}
@Qualifier
@Retention(RetentionPolicy.RUNTIME)
@interface Boring {