2012-10-20 5 views
6

Mit cglib Proxies im Frühjahr verursacht:Vermeidung von Problemen mit Feder cglib Proxy

a) Doppel Aufruf Konstruktor

b) nicht zulassen, dass ein Verfahren aus einer anderen Methode aufgerufen abzufangen

aber warum Frühling schafft eine Bohne und dann ein Proxy? Ist es möglich, eine Klasse dynamisch zu generieren, die eine angegebene Bean-Klasse erweitert und dann den Konstruktor nur einmal aufruft? das würde a) und b) für öffentliche und geschützte Methoden lösen. vermisse ich etwas?

Antwort

4

Gute Frage. Ich denke, es liegt daran, wie Spring den Anwendungskontext bootstrappt: Zuerst erstellt es alle rohen Beans und wendet dann Postprozessoren an, z. Hinzufügen von AOP (einschließlich Transaktionen). Für diese geschichtete Architektur muss zunächst eine normale Bean erstellt und dann umschlossen werden. Man könnte argumentieren, dass dieser Ansatz Zusammensetzung über Vererbung Prinzip folgt.

Beachten Sie auch, dass a) sollte kein Problem sein. Die Klasse sollte die Initialisierung im Konstruktor nicht ausführen, sondern in der Methode , die nur einmal aufgerufen wird. Auf der anderen Seite führt dies zu einer neuen Ausgabe:

c) eine nicht-Konstruktor Injektion mit CGLIB Proxies verwenden kann, SPR-3150

Aber ich verstehe Ihre Frustration sehen. Schätze, die einzige gültige Problemumgehung ist für uns das vollständige AspectJ Weben.

Verwandte Themen