Oberklasse hat keine null-Konstruktoren, aber keine Argumente gegeben wurden. Spring Integration
Entwickle ich web-Anwendung unterstützt Spring Integration. Ich bin mit der 1.0.4.RELEASE. Ich benutze CGLib-proxies. Ich habe eine transaktionale message-endpoint. Alles richtig geklappt hat, aber ich experimentierte ein wenig mit Anmerkungen. Ich benutze annotation-config, die funktioniert einwandfrei. Ich begann, aus meinen Wechsel service-activator-Konfiguration aus der xml-Anmerkungen, aber es ist fehlgeschlagen.
Folgende Konfiguration korrekt funktioniert:
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 {
...
}
}
Versuchen, zu erreichen, genau die gleiche Funktionalität unter Verwendung von Annotationen (in dem Bewusstsein, dass ich CGLIB, so brauche ich kein interface, sondern default-Konstruktor) ich
- entfernt service-Aktivator von meiner .xml -
- geändert MyService:
Geändert 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 {
...
}
}
Bekomme ich die folgende Fehlermeldung:
java.lang.IllegalArgumentException: Oberklasse hat keine null-Konstruktoren, aber keine Argumente gegeben wurden
Habe ich gesehen, dass viele threads, die beschreiben der folgenden Fehler Artikel, aber das problem war über benutzerdefinierte Klassen. Mein problem betrifft Frühling Klasse.
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
Was ist falsch? Warum Feder versucht, erstellen Sie den proxy für den Frühling Klasse, aber nicht nur für MyService? Ist meine Klasse irgendwie verpackt? Ich verstehe nicht, was passiert. Hilfe sehr geschätzt.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen, Sie aus dem
@Autowired
Tag. Das sieht für einen Konstruktor oder eine setter-Methode, um zu füllen das Feld. Wenn man bedenkt Sie haben weder von denen, das könnte das problem sein. Nur eine Vermutung aber.ODER Sie können myDao package-protected oder public (also, der Frühling kann eigentlich autowire es)
zum Beispiel: