2009-08-04 2 views
4

Ich schrieb einen benutzerdefinierten Struts RequsetProcessor für meine Anwendung, die einige Referenzen von Spring manuell abruft. Es funktioniert gut, aber ich würde gerne das "richtige" Ding machen und alles injizieren, was ich zur Bauzeit brauche.Spring Injection in Struts RequestProcessor

Gibt es eine Möglichkeit, eine benutzerdefinierte Struts Request in einer Weise zu definieren, die ich Frühling Objekte hinein injizieren kann, wenn Struts diese Request instanziiert?

Antwort

1

Die kurze Antwort ist "NEIN". Die lange Antwort ist „Art“:

Vorausgesetzt, dass Struts mit Feder in Ihrer Anwendung über ContextLoaderPlugin integriert ist, können Sie eines von zwei Dingen tun:

A) Erstellen Sie eine „ProcessorContext“ Bohne (oder was auch immer Sie wollen um es zu nennen), dass Sie in Ihrem Spring-Kontext definieren und auf Ihren benutzerdefinierten Anfrageprozessor zugreifen würden, indem Sie es aus dem Kontext von Spring abrufen (den Sie über WebApplicationContextUtils.getWebApplicationContext(getServletContext()) erhalten können).

B) Wenn Sie Ihre eigene Prozessor Spring DelegatingRequestProcessor oder DelegatingTilesRequestProcessor erstreckt können Sie stattdessen einen neuen Anforderungsprozessor schreiben, würde das tun, was Sie Funktionalität weisen wollen, binden sie mit allen Abhängigkeiten zum Frühling Kontext und dann verlängern DelegatingRequestProcessor oder DelegatingTilesRequestProcessor um es aus dem Kontext (entweder über Typ oder ID) zu erhalten und an ihn zu delegieren. Dies ist im Wesentlichen eine Erweiterung von (A), aber es delegiert alle Installationen von Spring an die Prozessor-Erweiterung von Spring und lässt Ihren benutzerdefinierten Prozessor federunabhängig.

Feder/Streben Integration wird ausführlich beschrieben here.

+0

Danke für auch eine URL in Ihrer Antwort ... diese Info hilft viel! –