diff --git a/spring-integration-core/src/main/java/org/springframework/integration/dsl/RecipientListRouterSpec.java b/spring-integration-core/src/main/java/org/springframework/integration/dsl/RecipientListRouterSpec.java index c217e4b239..222867317f 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/dsl/RecipientListRouterSpec.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/dsl/RecipientListRouterSpec.java @@ -102,9 +102,10 @@ public class RecipientListRouterSpec extends AbstractRouterSpec, BeanFac final AtomicReference methodValue = new AtomicReference<>(); ReflectionUtils.doWithMethods(target.getClass(), methodValue::set, - methodCandidate -> - !methodCandidate.isBridge() - && !methodCandidate.isDefault() - && methodCandidate.getDeclaringClass() != Object.class - && Modifier.isPublic(methodCandidate.getModifiers()) - && !Modifier.isStatic(methodCandidate.getModifiers())); + methodCandidate -> { + boolean isCandidate = !methodCandidate.isBridge() + && !methodCandidate.isDefault() + && methodCandidate.getDeclaringClass() != Object.class + && Modifier.isPublic(methodCandidate.getModifiers()) + && !Modifier.isStatic(methodCandidate.getModifiers()); + if (isCandidate) { + Assert.isNull(methodValue.get(), "LambdaMessageProcessor is applicable for inline or lambda " + + "classes with single method - functional interface implementations."); + } + return isCandidate; + }); Assert.notNull(methodValue.get(), "LambdaMessageProcessor is applicable for inline or lambda " + "classes with single method - functional interface implementations."); this.method = methodValue.get(); - this.method.setAccessible(true); this.parameterTypes = this.method.getParameterTypes(); this.payloadType = payloadType != null ? TypeDescriptor.valueOf(payloadType) : null; }