2009-11-11 5 views
0

J'ai un code structuré en beans Spring et dépendances entre eux. Ceci est seulement une petite partie du code puisque le reste est 'legacy' code.IOC (Spring Dependance Injection) et ServletContextListener

À ce stade, je voudrais effectuer une action sur l'un de ces beans dans une classe 'legacy' existante qui s'étend javax.servlet.ServletContextListener. Cette classe initialise l'application et son code n'est invoqué qu'une seule fois.

Quelle est ma meilleure ligne de conduite?

Merci!

Répondre

3

Il n'y a pas vraiment de point dans un bean Spring s'étendant ServletContextListener, puisque les beans n'écoutent pas le contexte de servlet. Si vous voulez utiliser des beans qui sont initialisés et détruits avec l'application, il y a plusieurs façons de le faire au printemps. Voir this part des docs.

+0

veuillez noter que j'avais reformulé ma question différemment ... – Yaneeve

4

Vous pouvez obtenir le contexte de printemps de cette façon:

WebApplicationContext ctx = WebApplicationContextUtils.getRequiredWebApplicationContext(servletContextEvent.getSevletContext())

Ensuite, vous pouvez appeler ctx.getBean ("nom"); (et un peu plus - vérifiez les javadocs de WebApplicationContext, et ses parents)