为什么要使用Spring的ApplicationContext层次结构?

我想了解Spring的ApplicationContext层次结构。

我学到了以下

  1. 一个ApplicationContext不能有一个以上的父ApplicationContext。
  2. 当一个给定的ApplicationContext无法parsing一个bean时,它会将parsing请求传递给它的父类。
  3. ApplicationContext的父级在其构造函数中指定。

我想了解何时使用ApplicationContext层次结构(而不​​是一个单一的ApplicationContext)。

我可以从谷歌最好的是这个 。 而我所理解的是,如果一个应用程序在各个层次上定义了大量的bean,那么每一个有自己的ApplicationContext的层将是一个好处。 不明白的是,这样做的好处是什么,好处如何?

TIA,维杰

这个经典的用例是当你在一个webapp中有多个Spring DispatcherServlet ,每个servlet都有自己的app context,但是需要在它们之间共享bean。 在这种情况下,在webapp级别添加第三个上下文,这是每个servlet appcontext的父级。

您可以进一步采用这种模式,例如,如果您将多个webapp捆绑到一个JavaEE EAR中。 在这里,EAR可以有它自己的上下文,它是各个webapp上下文的父节点,它是servlet上下文的父节点,依此类推。 你有这种责任等级。

在其他情况下,上下文结构是由其他因素决定的。 例如,Spring Security独立于Spring MVC,并且要求其configurationbean进入webapp上下文。 如果你想使用Spring MVC,那么它的configuration必须进入以webapp上下文作为父项的servlet上下文。