Comment sont exactement le contexte de la racine et le répartiteur de la servlet dans un contexte Spring MVC de l'application web?
Je suis étudiant Spring MVC et j'ai quelques doute liée
Donc, j'ai cette classe de configuration permettant de configurer mon DispatcherServlet qui traitent les demandes des utilisateurs:
public class MyWebAppInitializer implements WebApplicationInitializer {
@Override
public void onStartup(ServletContext container) {
//Create the 'root' Spring application context
AnnotationConfigWebApplicationContext rootContext = ...
//Create the dispatcher servlet's Spring application context
AnnotationConfigWebApplicationContext dispatcherContext = new AnnotationConfigWebApplicationContext();
dispatcherContext.register(DispatcherConfig.class);
//Register and map the dispatcher servlet
ServletRegistration.Dynamic dispatcher = container.addServlet("main", new DispatcherServlet(dispatcherContext));
dispatcher.setLoadOnStartup(1);
dispatcher.addMapping("main/");
}
}
Il est assez clair pour moi comment les DispatcherServlet œuvres. Mes doutes sont liés à la contexte concept.
1) qu'est-Ce exactement représentent un contexte? Je pense que c'est quelque chose comme un ensemble de haricots qui ont un pourpose et qui travaille ensemble dans un environnement. Mais je suis absolument pas vrai à propos de cette affirmation.
2) Quelle est la différence entre le contexte de la racine et la répartiteur servlet contexte?
3) De ce que j'ai à comprendre les haricots défini dans dispatcherContext avoir accès à des haricots défini dans rootContext (mais l'inverse n'est pas vrai). Pourquoi?
Tnx
- Votre fichier WAR est le contexte.
- Les haricots/configuraiton chargé par le
ContextLoaderListener
est le contexte de la racine, tout chargé par unDispatcherServlet
(ouMessageDispatcherServlet
pour le Printemps-WS) est un enfant de cadre. Vous pouvez avoir plusieurs servlets qui ont tous accès à la racine de contexte (doit contenir des ressources partagées comme les services, etc.). Maintenant, si vous avez 10 répartiteur de servlets, qui servlet doit être accessible par le contexte de la racine? Donc seul le parent est accessible à partir de l'enfant et non l'inverse. Ce serait aussi conduire à des problèmes avec l'AOP, tout à coup AOP défini par l'enfant aurait une influence sur le parent. - Tnx tellement, parfait explication. Si vous mettez comme réponse, je vais l'accepter 🙂
- stackoverflow.com/questions/19619539/...
- link1 , link2 de bonnes explications.
Vous devez vous connecter pour publier un commentaire.
Contexte De La Racine
La racine de contexte, au Printemps de l'application est la
ApplicationContext
qui est chargé par leContextLoaderListener
. Ce contexte devrait avoir à l'échelle mondiale des ressources disponibles comme les services, les référentiels, les infrastructures de haricots (DataSource
,EntityManagerFactory
s etc.) etc.La
ContextLoaderListener
registres de ce contexte dans leServletContext
sous le nom deorg.springframework.web.context.WebApplicationContext.ROOT
.Si vous chargez un
ApplicationContext
vous-même et l'enregistrer avec le nom ci-dessus dans leServletContext
qui va alors être considéré comme la racine de contexte.Enfant Contexte
L'enfant-dans un contexte de Printemps de l'application est la
ApplicationContext
qui est chargé par unDispatcherServlet
(ou, par exemple, unMessageDispatcherServlet
dans un Spring-WS application). Ce contexte ne doit contenir que des haricots pertinents à ce contexte, pour Spring MVC qui seraitViewResolver
s,HandlerMapping
s etc.La servlet registres de ce contexte dans le
ServletContext
sous le nom deorg.springframework.web.servlet.FrameworkServlet.CONTEXT.<servlet-name>
.Racine <-Enfant, Relation
Seul enfant contextes avoir accès au contexte parent, parce que vous pourriez avoir plusieurs enfants contextes. Par exemple dans un Spring MVC, combiné avec Spring WS application. Le parent-le contexte est détecter par le childs par retrouver dans le
ServletContext
avec le nom bien connu.Si le contexte de la racine d'avoir accès à l'enfant dont l'un serait-il l'utilisation de fil de haricots? À côté, si c'est le cas, vous devez également obtenir des résultats surprenants lorsque l'AOP est en cause. AOP défini à l'enfant un contexte tout à coup l'influence des haricots configuré dans le contexte de la racine.