Superclass没有null构造函数,但没有给出参数. Spring集成

我正在开发Spring Integration支持的Web应用程序.我正在使用1.0.4.RELEASE.我使用CGLib代理.我有一个事务性消息端点.一切都正常,但我尝试了一些注释.我使用annotation-config,它工作正常.我从将服务激活器配置从xml切换到注释开始,但它失败了.

以下配置正常工作:

弹簧integration.xml

<channel id="inChannel" />
<channel id="outChannel" />
<service-activator method="myMethod" input-channel="inChannel" ref="myService" output-channel="outChannel" />

MyService.java

@MessageEndpoint
@Transactional
public class MyService {

   @Autowired
   private MyDao myDao;

   public MyObject myMethod(String message) throws Exception {
      ...
   }

}

尝试使用注释实现完全相同的功能(记住我使用CGLIB,所以我不需要接口,但默认构造函数)我

>从我的.xml中删除了service-activator
>改变了我的服务:

更改了MyService.java

@MessageEndpoint
@Transactional
public class MyService {

   @Autowired
   private MyDao myDao;

   public MyService () {
   }

   @ServiceActivator(inputChannel="inChannel", outputChannel="outChannel")
   public MyObject myMethod(String message) throws Exception {
      ...
   }

}

我收到以下错误:
java.lang.IllegalArgumentException:Superclass没有null构造函数但没有给出参数

我见过许多线程描述了以下错误article,但问题是关于自定义类.我的问题是关于Spring类.

Error creating bean with name 'myService'
nested exception is org.springframework.aop.framework.AopConfigException
Could not generate CGLIB subclass of class [class org.springframework.integration.handler.ServiceActivatingHandler]
java.lang.IllegalArgumentException: Superclass has no null constructors but no arguments were given

怎么了?为什么Spring尝试为spring类创建代理,而不仅仅是为MyService创建代理?我的课程被包裹了吗?我不明白发生了什么.非常感谢.

解决方法:

尝试取消@Autowired标签.这样可以查找构造函数或setter方法以填充该字段.考虑到你没有这些,这可能是问题所在.只是一个猜测.

上一篇:leetcode Letter Combinations of a Phone Number python


下一篇:java – Spring注释与我的设计指南相冲突