2010-03-22 3 views
0

Je suis nouveau au printemps et j'utilise actuellement ClassPathXmlApplicationContext à getBean à l'intérieur de la classe de contrôleur. Ceci est un petit exemple d'application Je construis. Mais ce que j'essaie de faire est de déplacer cette ClassPathXmlApplicationContext vers une nouvelle classe et de la maintenir statique à travers l'application. Donc, je peux simplement appeler la nouvelle classe pour appeler le constructeur DAO à l'intérieur. J'ai essayé quelques choses mais je reçois NestedServletException erreur tout le temps.créer une classe de connexion de données de printemps en utilisant ClassPathXmlApplicationContext

S'il vous plaît me suggérer une façon d'écrire ma nouvelle classe pour la connexion de données qui seront restent dans le même état dans mon application, à savoir que je peux appeler l'intérieur de chaque classe de contrôleur et ne pas créer un objet DAO dans le constructeur à chaque fois.

Appréciez toute aide, suggestion.

grâce Walker

Répondre

2

Comme je suppose du nom d'exception, vous parlez d'une application web. Dans ce cas, vous n'avez pas besoin de créer le contexte de l'application. Le printemps a ses mécanismes intégrés. Par exemple, utilisez un écouteur (en web.xml)

<listener> 
    <listener-class> 
     org.springframework.web.context.ContextLoaderListener 
    </listener-class> 
</listener> 

Et tous vos haricots sont câblés se automatiquement par ressort (si, bien sûr, correctement configuré).

Vous pouvez toujours obtenir Ahold du contexte, soit par la mise en œuvre ApplicationContextAware ou par callign WebApplicationContextUtils.getRequiredWebApplicationContext(), mais vous ne devriez pas avoir cela dans le scénario général.

Vous ne devez pas utiliser le contexte d'application manuellement. Au lieu de cela, Spring fil votre application en utilisant dependency injection et tous vos objets (contrôleurs, daos, etc) ont leurs dépendances en place, sans avoir besoin de les "atteindre" dans un certain contexte.

+0

Merci Bozho pour la réponse rapide. Je pense que cela va résoudre mon problème. Je vais vous donner un coup de feu. Merci :) – Walker

Questions connexes