Spring Integration でサポートされている Web アプリケーションを開発しています。1.0.4.RELEASE を使用しています。私はCGLibプロキシを使用しています。トランザクション メッセージ エンドポイントがあります。すべてが正しく機能しましたが、注釈を少し試してみました。私は正常に動作するannotation-configを使用しています。service-activator 構成を xml から注釈に切り替えることから始めましたが、失敗しました。
次の構成は正しく機能しました。
spring-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:
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: スーパークラスには null コンストラクターがありませんが、引数が指定されていません
次のエラー記事について説明しているスレッドを多数見てきましたが、問題はカスタム クラスに関するものでした。私の問題は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 が MyService だけでなく、Spring クラスのプロキシを作成しようとするのはなぜですか? 私のクラスは何らかの方法でラップされていますか? 何が起こっているのかわかりません。大変助かります。