Ich habe gerade in AspectJ eingecheckt und ich bekomme nie Parameternamen wie null
mit AspectJ 1.8.6. Vielleicht verwenden Sie eine ältere Version und müssen auf die aktuelle Version (1.8.9) upgraden. Die Parameternamen werden korrekt angezeigt, wenn die betreffenden Klassendateien mit den entsprechenden Debug-Informationen kompiliert wurden. Aber selbst wenn die Debug-Informationen gestrippt wurde oder Sie Zugriff auf Parameternamen für Methoden JDK, zumindest werden AspectJ Namen ausspucken wie arg0
, arg1
usw.
Update: Das Problem besteht nicht in reiner AspectJ oder in AspectJ LTW wurde in Spring-Anwendungen nur in Proxy-basierten Spring AOP mit dynamischen JDK-Proxys verwendet. Ich könnte das Problem mit einem kleinen Beispielprojekt reproduzieren, das ich irgendwo auf GitHub geklont habe.
Die Lösung, wenn Sie gegen Schnittstellen programmieren, besteht darin, die CGLIB-Verwendung für Proxies zu erzwingen, obwohl der Standardwert hier JDK-Proxies ist.
Also, wenn Sie Ihre Konfiguration sieht aus wie ...
<aop:aspectj-autoproxy/>
... es nur ändern:
<aop:aspectj-autoproxy/>
<aop:config proxy-target-class="true">
<!-- other beans defined here... -->
</aop:config>
versuchen dann erneut und zu genießen. :-)
Hallo @kriegaex! Ich verwende derzeit AspectJ 1.6.11. Ich werde auf die neueste Version aktualisieren und überprüfen .... –
Ich habe gerade aktualisiert meine aspectj maven Abhängigkeit zu 1.8.9 .... immer noch bekomme ich ParameterNames als null ... Ist dieses Problem etwas mit jdk oder cglib Proxy verbunden? ... –
Ich habe meine Antwort aktualisiert. – kriegaex