diff --git a/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/catalog/BeanFactoryAwareFunctionRegistry.java b/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/catalog/BeanFactoryAwareFunctionRegistry.java index 518e6f7e8..d50559f3d 100644 --- a/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/catalog/BeanFactoryAwareFunctionRegistry.java +++ b/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/catalog/BeanFactoryAwareFunctionRegistry.java @@ -449,9 +449,11 @@ public class BeanFactoryAwareFunctionRegistry FunctionInvocationWrapper(Object target, Type functionType, String functionDefinition, String... acceptedOutputMimeTypes) { this.target = target; - this.composed = !target.getClass().getName().contains("$$EnhancerBySpringCGLIB") + this.composed = target instanceof RoutingFunction || + (!target.getClass().getName().contains("$$EnhancerBySpringCGLIB") && !AopUtils.isAopProxy(target) && !AopUtils.isJdkDynamicProxy(target) - && target.getClass().getDeclaredFields().length > 1; + && target.getClass().getDeclaredFields().length > 1 + && target.getClass().isSynthetic()); this.functionType = functionType; this.acceptedOutputMimeTypes = acceptedOutputMimeTypes; this.functionDefinition = functionDefinition;