2010-12-15 98 views
2

Je viens d'entrer au printemps (par moi-même, donc je n'ai personne à poser de questions stupides).Questions sur la configuration du ressort

J'ai quelques questions sur la configuration de Spring (j'utilise 3.0). En lisant le manuel, il est dit que la configuration "principale" est celle du conteneur IoC qui instancie tous vos beans. De cette façon, lorsque vous instanciez un ApplicationContext, vous devez lui transmettre les xml avec les bits de configuration pour tous vos beans.

Quoi qu'il en soit, lorsque vous utilisez l'infrastructure Web MVC, vous instanciez DispatcherServlet, puis vous créez un fichier XML avec le nom qui inclut la configuration de servlet et vous y mettez vos données. Première question: est-ce tout? Je veux dire que le fichier xml représente les mêmes fichiers que je pourrais transmettre au constructeur applicationcontext ou est-ce différent? Dois-je créer d'autres fichiers si je veux configurer tout l'applicationContext? Comment?

Aller plus loin Je vois que la servlet du répartiteur peut vouloir plus de config. Comme si vous voulez configurer Views, vous devez écrire une configuration si vous voulez résoudre un bean View et des situations similaires. Maintenant, je vois de nombreux tutoriels parlant d'un fichier views.xml ... Ce n'est même pas mentionné dans le manuel (cntrl + f non trouvé). Je me demande si c'est un fichier que les programmeurs créent alors inclure dans le DispatcherServlet ou est une valeur par défaut que certains composants lisent ... Je suis confus à ce sujet.

J'aimerais en savoir plus sur la relation entre une configuration ApplicationContext entière et le dispatcherservlet. Plus si c'est le cas qu'il existe d'autres fichiers xml, j'aimerais savoir où trouver des ressources à ce sujet, car les documents sont très confus.

Merci

Répondre

3

vous pouvez également partager votre applicationContext ou servlet.xml en définissant simplement plusieurs fichiers dans votre site Web.xml

<init-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value> 
    /WEB-INF/spring/spring-beans1.xml 
    /WEB-INF/spring/spring-beans2.xml 
    </param-value> 
</init-param> 

jeter un oeil à cette question Use a ContextLoaderListener in accordance with DispatchServlet

Une chose que je devais comprendre quand je commencé à utiliser le printemps a été, que la portée par défaut du contexte d'application a été singleton et du la DispatcherServlet demande. Cela signifie que même si ApplicationContext et DispatcherServlet sont démarrés lorsque votre application démarre, si vous obtenez un bean du contexte de l'application, il est toujours le même objet tant que l'application est en cours d'exécution, alors que si vous obtenez un bean du servlet.xml il est toujours nouvellement instancié pour chaque requête http.

voir http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/beans.html#beans-factory-scopes

Le applicationContext est toujours automagiquement disponible dans un servlet.xml

Vous pouvez également obtenir le applicationContext vous en utilisant http://static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/web/context/support/WebApplicationContextUtils.html

3

Quoi qu'il en soit lorsque vous utilisez le framework MVC web, vous instancier le DispatcherServlet, vous créez un fichier xml avec le nom qui inclut la configuration de servlet et vous mettez vos choses là-bas. Première question: est-ce tout? Je veux dire que le fichier xml représente les mêmes fichiers que je pourrais transmettre au constructeur applicationcontext ou est-ce différent? Dois-je créer d'autres fichiers si je veux configurer tout l'applicationContext? Comment?

Alors qu'en théorie, vous pouvez définir tous les beans dans un contexte d'application web monolithique, il est généralement considéré comme une bonne pratique de diviser les contextes par fonctionnalité.

par exemple.

  • un contexte définirait printemps contrôleurs web mvc
  • une définirait la couche de service
  • une définirait la couche persistance/dao

Et vous importer ces contextes dans la principale web contexte utilisant les déclarations <import ...>.

Voici la section correspondante dans la référence du printemps: