Skip to content

Commit f033e8c

Browse files
committed
Include ancestor contexts in user-defined builder check
Spring Boot's @ConditionalOnMissingBean defaults to SearchStrategy.ALL, which walks the entire bean factory hierarchy. Use BeanFactoryUtils.beanNamesForTypeIncludingAncestors so the custom condition matches that behavior and detects a user-defined EventHubClientBuilder bean registered in a parent ApplicationContext.
1 parent 866f79d commit f033e8c

1 file changed

Lines changed: 3 additions & 1 deletion

File tree

sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/eventhubs/OnMissingUserDefinedEventHubClientBuilderCondition.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
import com.azure.messaging.eventhubs.EventHubClientBuilder;
77
import com.azure.spring.cloud.autoconfigure.implementation.context.AzureContextUtils;
8+
import org.springframework.beans.factory.BeanFactoryUtils;
89
import org.springframework.boot.autoconfigure.condition.ConditionOutcome;
910
import org.springframework.boot.autoconfigure.condition.SpringBootCondition;
1011
import org.springframework.context.annotation.ConditionContext;
@@ -38,7 +39,8 @@ public ConfigurationPhase getConfigurationPhase() {
3839

3940
@Override
4041
public ConditionOutcome getMatchOutcome(ConditionContext context, AnnotatedTypeMetadata metadata) {
41-
String[] beanNames = context.getBeanFactory().getBeanNamesForType(EventHubClientBuilder.class, true, false);
42+
String[] beanNames = BeanFactoryUtils.beanNamesForTypeIncludingAncestors(
43+
context.getBeanFactory(), EventHubClientBuilder.class, true, false);
4244
for (String name : beanNames) {
4345
if (!RESERVED_BUILDER_BEAN_NAMES.contains(name)) {
4446
return ConditionOutcome.noMatch("found user-defined EventHubClientBuilder bean: " + name);

0 commit comments

Comments
 (0)