56 votes

Pourquoi utiliser les hiérarchies de Spring ApplicationContext ?

J'essaie de comprendre les hiérarchies d'ApplicationContext dans Spring.

J'ai appris ce qui suit

  1. Un ApplicationContext ne peut pas avoir plus d'un parent ApplicationContext.
  2. Lorsqu'un ApplicationContext ne peut pas résoudre un bean, il transmet la demande de résolution à son parent.
  3. Le parent de d'un ApplicationContext est spécifié dans son constructeur.

J'aimerais comprendre quand il faut utiliser des hiérarchies d'ApplicationContext (au lieu d'un seul ApplicationContext).

Le mieux que j'ai pu obtenir de Google était este . Et ce que je comprends c'est que si une application a un grand nombre de beans définis aux différentes couches, alors chaque couche ayant son propre ApplicationContext serait un avantage. Ce que je ne comprends pas, c'est quel est l'avantage de le faire et comment l'obtenir ?

0 votes

Bonjour ! Il semble que le lien que vous avez fourni dans la question ne pointe pas vers l'article sur les contextes de printemps :)

0 votes

Merci de le signaler @aggredi. J'ai supprimé la référence au lien.

53voto

skaffman Points 197885

Le classique de cas d'utilisation pour cela est lorsque vous avez plusieurs de Printemps, DispatcherServlet au sein d'une seule application, avec chacun de ces servlets avoir leur propre application en contexte, mais qui ont besoin de partager des haricots entre eux. Dans ce cas, vous devez ajouter un 3ème contexte au niveau de la webapp, qui est le parent de chaque servlet appcontexts.

Vous pouvez prendre ce modèle, par exemple si vous avez plusieurs webapps regroupé dans un seul JavaEE OREILLE. Ici, l'OREILLE peut avoir son propre contexte, qui est le parent de la personne webapp contextes, ce qui est le parent de la servlet contextes, et ainsi de suite. Vous avez cette hiérarchie des responsabilités.

Dans d'autres situations, le contexte de la structure est dicté par un autre facteur. Par exemple, le Printemps de Sécurité est indépendante de Spring MVC, et requiert une configuration de haricots pour aller dans la webapp contexte. Si vous souhaitez utiliser Spring MVC avec elle, puis la config pour que a aille dans le contexte de servlet, qui a la racine de la webapp contexte que son parent.

11 votes

En poursuivant la lecture, j'ai compris ce qui suit (skaffman en a déjà indiqué certaines parties). Chaque webapp Spring MVC possède un contexte d'application Root et un contexte d'application servlet pour chaque DispatcherServlet. Le contexte d'application Root est le parent de chaque contexte d'application servlet. Les beans définis dans "contextConfigLocation" (context-param dans web.xml) sont chargés dans le contexte d'application Root. Les beans dans <servlet-name>-servlet.xml sont chargés dans le contexte d'application servlet. Si un EAR possède plusieurs applications web, un contexte d'application au niveau de l'EAR peut être parent du contexte Root de chaque application web de l'EAR.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X