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()
方法。
您好,我有一个 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()
方法。