java.lang.nosuchMethodexception: com.sun.proxy. $ proxy58.list Fehlerlösung
Es gibt immer einige unerwartete Ausnahmen beim Spielen von SSH im Web. Es gibt viele Dinge, die Sie nicht vorsichtig oder nachlässig sind. Daher werden die Lösungen unterschiedlich sein. Die Lösungen, denen andere begegnet sind, sind für Sie möglicherweise ungültig. Genau wie die Ausnahme, die ich oben gemeldet habe, habe ich Baidu schon oft verwendet, und die Antwort, die ich mir gegeben habe, ist nichts anderes, als einen Satz zu AOP hinzuzufügen, aber es tut mir sehr leid, ich habe es dem Ungültigen hinzugefügt! Das Gleiche ist also wahr, Sie müssen immer noch Ihre eigene Abnormalität lösen.
Lassen Sie mich zunächst die SSH -Struktur und die Gründe für die Ausnahme in meiner Praxis diesmal erklären.
Die Struts2.2+Hibernate4.2+Spring4.0, Containerraum Tomcat7.0. In Aktion schrieb ich eine Basisklassen -Basis, erbte die Aktionsversorgung und implementierte die modelldurchschnittliche Schnittstelle. Der Code ist wie folgt:
----------@component@transactional ---------- öffentliche Abstract-Klassen-Basisaction <T> Erweitert actionupport implementiert modelldelen <T> {private statische endgültige lange Serialversionuid = 271968850130729741L; @Resource (name = "roleserviceImpl") geschützte Roleservice Roleservice; @Resource (name = "Abteilungsservice") geschützte Abteilungsversorgungsabteilung; @Resource (name = "userService") geschützt UserService UserService; geschütztes T -Modell; public baseacction () {parameterizedtype pt = (parameterizedtype) this.getClass (). getGenericsuperClass (); @SuppressWarnings ("Deaktiviert") Klasse <T> clazz = (class <T>) pt.getactualtTePeargumente () [0]; try {model = clazz.newinstance (); } catch (Ausnahme e) {neue runTimeException (e) werfen; }} public t getModel () {return model; }} Der Vorteil davon besteht darin, dass die entsprechende Aktion jeder Komponente nur die Basis der Generika zur Implementierung mitteilen muss und dann nur eine eigene Logik abschließen muss. Damit jede Aktion zur Implementierung von ActionVorts implementiert ist, handelt es sich um eine grundlegende und leicht zu denken-Lösung.
In jeder Aktion wird dann die Servicekomponente aufgefordert, ihre eigenen Funktionen zu implementieren. In jeder Aktion werden @Component ("DepartmentAction") und @Scope ("Prototyp") Anmerkungen verwendet. Sobald Sie jedoch den Test üben, wird eine Ausnahme von $ proxy58.List () eine Ausnahme von $ proxy58.List () erscheinen. Nach der Überprüfung wird festgestellt, dass der Grund ist:
Basiswirkung ist abstrakt, es ist nicht sinnvoll, @Transactional hinzuzufügen.
@Transactional wird vom Frühling verwaltet. Die von der Frühling verwalteten Objekte müssen als Agenten erzeugt werden. Für eine abstrakte Klasse kann es nicht neu in ein Objekt sein. Nur die konkrete Implementierungsklasse einer abstrakten Klasse kann durch den Frühling vervollständigt werden.
Daher ist es der Grund für diese Frage, das Entfernen des @Transactional auf Basisreaktion zu entfernen.
Danke fürs Lesen, ich hoffe, es kann Ihnen helfen. Vielen Dank für Ihre Unterstützung für diese Seite!