2009-08-04 15 views
4

J'ai écrit un Struts RequsetProcessor personnalisé pour mon application qui récupère manuellement certaines références de Spring. Cela fonctionne très bien, mais je voudrais faire la «bonne» chose et injecter tout ce dont j'ai besoin au moment de la construction.Injection de printemps dans Struts RequestProcessor

Existe-t-il un moyen de définir un Struts RequestProcessor personnalisé de manière à pouvoir injecter des objets Spring dans celui-ci lorsque Struts instancie ce RequestProcessor?

Répondre

1

La réponse courte est "NON". La réponse longue est « une sorte de »:

En supposant Struts est intégré avec le printemps dans votre application via ContextLoaderPlugin, vous pouvez le faire de deux choses:

A) Créer un haricot « ProcessorContext » (ou tout ce que vous voulez pour l'appeler) que vous définiriez dans votre contexte Spring et l'accès à partir de votre processeur de requêtes personnalisé en l'obtenant à partir du contexte de Spring (que vous pouvez obtenir via WebApplicationContextUtils.getWebApplicationContext(getServletContext())).

B) Si votre processeur personnalisé étend DelegatingRequestProcessor de printemps ou DelegatingTilesRequestProcessor vous pouvez plutôt écrire un nouveau processeur de demande qui faire ce que vous voulez fonctionnalité sage, se lient à Spring contexte avec toutes vos dépendances, puis étendre DelegatingRequestProcessor ou DelegatingTilesRequestProcessor pour l'obtenir du contexte (soit via le type ou l'ID) et déléguer à lui. Ceci est essentiellement une extension de (A), mais il délègue toute la plomberie de Spring à l'extension de processeur de demande de Spring, laissant votre processeur personnalisé indépendant du printemps.

L'intégration ressort/entretoises est décrite en détail here.

+0

Merci d'inclure également une URL dans votre réponse ... cette info aide beaucoup! –