Spring 引导 + Spring 集成 Java DSL + AOP:代理网关接口失败

Spring Boot + Spring Integration Java DSL + AOP : Fails to proxy the Gateway interface

您好,我有一个 spring 引导应用程序,它通过网关接口启动 spring 集成流程,使用 Java DSL。一切正常。我添加了 AOP 来捕获异常,使用 @EnableAspectJAutoProxy(proxyTargetClass = true)

在这个阶段,它给出了错误:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jobInitiator': Post-processing of FactoryBean's singleton object failed; nested exception is org.springframework.aop.framework.AopConfigException: Could not generate CGLIB subclass of class [class com.sun.proxy.$Proxy54]: Common causes of this problem include using a final class or a non-visible class; nested exception is java.lang.IllegalArgumentException: Cannot subclass final class class com.sun.proxy.$Proxy54

当我删除 proxyTargetClass = true 时,它可以工作,但不会触发建议。

有什么帮助吗?有没有办法在没有网关的情况下启动 spring 集成流程?

没有 class 与网关 Proxy 相关联,因此您无法提供建议。

Is there a way to start the spring integration flow without a gateway?

不使用网关,而是声明类型为 MessagingTemplate 的 bean 并使用 template.sendAndReceive(someMessage)template.convertSendAndReceive(somePojo)。参见 here

(网关内部使用一个MessagingTemplate;网关解包一个MessagingException并抛出原因,模板没有)。

也不支持错误通道。

为了更接近网关功能,您可以子class MessagingGatewaySupport 并调用它的sendAndReceive() 方法。