Browse Source

Merge branch '3.4.x' into 3.5.x

Closes gh-48123
pull/48129/head
Andy Wilkinson 1 month ago
parent
commit
91cb68bd17
  1. 12
      spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/condition/OnBeanCondition.java
  2. 10
      spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/condition/ConditionalOnSingleCandidateTests.java

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

@ -461,11 +461,19 @@ class OnBeanCondition extends FilteringSpringBootCondition implements Configurat @@ -461,11 +461,19 @@ class OnBeanCondition extends FilteringSpringBootCondition implements Configurat
}
private List<String> getPrimaryBeans(Map<String, BeanDefinition> beanDefinitions) {
return getMatchingBeans(beanDefinitions, BeanDefinition::isPrimary);
return getMatchingBeans(beanDefinitions, this::isPrimary);
}
private boolean isPrimary(BeanDefinition beanDefinition) {
return (beanDefinition != null) && beanDefinition.isPrimary();
}
private List<String> getNonFallbackBeans(Map<String, BeanDefinition> beanDefinitions) {
return getMatchingBeans(beanDefinitions, Predicate.not(BeanDefinition::isFallback));
return getMatchingBeans(beanDefinitions, this::isNotFallback);
}
private boolean isNotFallback(BeanDefinition beanDefinition) {
return (beanDefinition == null) || !beanDefinition.isFallback();
}
private List<String> getMatchingBeans(Map<String, BeanDefinition> beanDefinitions, Predicate<BeanDefinition> test) {

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

@ -195,6 +195,16 @@ class ConditionalOnSingleCandidateTests { @@ -195,6 +195,16 @@ class ConditionalOnSingleCandidateTests {
});
}
@Test
void singleCandidateDoesNotMatchWhenMultipleRegisteredAsSingletonCandidates() {
this.contextRunner.withInitializer((context) -> {
context.getBeanFactory().registerSingleton("alpha", "alpha");
context.getBeanFactory().registerSingleton("bravo", "bravo");
})
.withUserConfiguration(OnBeanSingleCandidateConfiguration.class)
.run((context) -> assertThat(context).doesNotHaveBean("consumer"));
}
@Configuration(proxyBeanMethods = false)
@ConditionalOnSingleCandidate(String.class)
static class OnBeanSingleCandidateConfiguration {

Loading…
Cancel
Save