From 633bc7b168d63535258ea64be8a509f905c12a70 Mon Sep 17 00:00:00 2001 From: Oleg Zhurakousky Date: Wed, 6 Oct 2021 11:03:26 +0200 Subject: [PATCH] GH-2229 behavior of when there is a single function bean in context Resolves #2229 --- .../cloud/stream/function/FunctionConfiguration.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) 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 59346006e..f7fceaf04 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 @@ -848,7 +848,10 @@ public class FunctionConfiguration { String[] sourceNames = this.environment.getProperty(SOURCE_PROPERY).split(";"); for (String sourceName : sourceNames) { - if (functionCatalog.lookup(sourceName) == null) { + FunctionInvocationWrapper sourceFunc = functionCatalog.lookup(sourceName); + + if (sourceFunc == null || //see https://github.com/spring-cloud/spring-cloud-stream/issues/2229 + (!sourceFunc.getFunctionDefinition().equals(sourceName) && applicationContext.containsBean(sourceName))) { RootBeanDefinition functionBindableProxyDefinition = new RootBeanDefinition(BindableFunctionProxyFactory.class); functionBindableProxyDefinition.getConstructorArgumentValues().addGenericArgumentValue(sourceName); functionBindableProxyDefinition.getConstructorArgumentValues().addGenericArgumentValue(0);