Skip to content

Commit 91cb68b

Browse files
committed
Merge branch '3.4.x' into 3.5.x
Closes gh-48123
2 parents b50a2d0 + f3b0d5a commit 91cb68b

File tree

2 files changed

+20
-2
lines changed

2 files changed

+20
-2
lines changed

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/condition/OnBeanCondition.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -461,11 +461,19 @@ private Map<String, BeanDefinition> getBeanDefinitions(ConfigurableListableBeanF
461461
}
462462

463463
private List<String> getPrimaryBeans(Map<String, BeanDefinition> beanDefinitions) {
464-
return getMatchingBeans(beanDefinitions, BeanDefinition::isPrimary);
464+
return getMatchingBeans(beanDefinitions, this::isPrimary);
465+
}
466+
467+
private boolean isPrimary(BeanDefinition beanDefinition) {
468+
return (beanDefinition != null) && beanDefinition.isPrimary();
465469
}
466470

467471
private List<String> getNonFallbackBeans(Map<String, BeanDefinition> beanDefinitions) {
468-
return getMatchingBeans(beanDefinitions, Predicate.not(BeanDefinition::isFallback));
472+
return getMatchingBeans(beanDefinitions, this::isNotFallback);
473+
}
474+
475+
private boolean isNotFallback(BeanDefinition beanDefinition) {
476+
return (beanDefinition == null) || !beanDefinition.isFallback();
469477
}
470478

471479
private List<String> getMatchingBeans(Map<String, BeanDefinition> beanDefinitions, Predicate<BeanDefinition> test) {

spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/condition/ConditionalOnSingleCandidateTests.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,16 @@ void singleCandidateMultipleCandidatesOneDefaultCandidate() {
195195
});
196196
}
197197

198+
@Test
199+
void singleCandidateDoesNotMatchWhenMultipleRegisteredAsSingletonCandidates() {
200+
this.contextRunner.withInitializer((context) -> {
201+
context.getBeanFactory().registerSingleton("alpha", "alpha");
202+
context.getBeanFactory().registerSingleton("bravo", "bravo");
203+
})
204+
.withUserConfiguration(OnBeanSingleCandidateConfiguration.class)
205+
.run((context) -> assertThat(context).doesNotHaveBean("consumer"));
206+
}
207+
198208
@Configuration(proxyBeanMethods = false)
199209
@ConditionalOnSingleCandidate(String.class)
200210
static class OnBeanSingleCandidateConfiguration {

0 commit comments

Comments
 (0)