diff --git a/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/function/FunctionConfiguration.java b/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/function/FunctionConfiguration.java index dd6163fbd..f8df11fe8 100644 --- a/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/function/FunctionConfiguration.java +++ b/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/function/FunctionConfiguration.java @@ -588,12 +588,7 @@ public class FunctionConfiguration { @Override public void afterPropertiesSet() throws Exception { - Class[] configurationClasses = binderTypeRegistry.getAll().values().iterator().next() - .getConfigurationClasses(); - boolean bindingProvider = Stream.of(configurationClasses) - .filter(clazz -> AnnotationUtils.findAnnotation(clazz, BindingProvider.class) != null) - .findFirst().isPresent(); - if (!bindingProvider + if (nonBindingProviderBindersFound() && ObjectUtils.isEmpty(applicationContext.getBeanNamesForAnnotation(EnableBinding.class)) && this.determineFunctionName(functionCatalog, environment)) { BeanDefinitionRegistry registry = (BeanDefinitionRegistry) applicationContext.getBeanFactory(); @@ -626,6 +621,11 @@ public class FunctionConfiguration { } } + private boolean nonBindingProviderBindersFound() { + return binderTypeRegistry.getAll().values().stream().anyMatch(binderType -> Stream.of(binderType.getConfigurationClasses()) + .anyMatch(clazz -> AnnotationUtils.findAnnotation(clazz, BindingProvider.class) == null)); + } + private boolean determineFunctionName(FunctionCatalog catalog, Environment environment) { String definition = streamFunctionProperties.getDefinition(); if (!StringUtils.hasText(definition)) {