为什么要使用Spring应用程序上下文层次结构?

为什么要使用Spring应用程序上下文层次结构?,spring,Spring,我试图理解spring中的ApplicationContext层次结构 我学到了以下几点 ApplicationContext不能具有 超过一位家长 应用程序上下文 当一个给定的 ApplicationContext无法解析 bean,它会通过决议的 请求其父级 父母 已指定ApplicationContext 在其构造函数中 我想了解何时使用ApplicationContext层次结构(而不是单个ApplicationContext) 我能从谷歌得到的最好的信息是。我的理解是,如果一个应用程序

我试图理解spring中的ApplicationContext层次结构

我学到了以下几点

  • ApplicationContext不能具有 超过一位家长 应用程序上下文
  • 当一个给定的 ApplicationContext无法解析 bean,它会通过决议的 请求其父级
  • 父母 已指定ApplicationContext 在其构造函数中
  • 我想了解何时使用ApplicationContext层次结构(而不是单个ApplicationContext)


    我能从谷歌得到的最好的信息是。我的理解是,如果一个应用程序在不同的层上定义了大量的bean,那么每一层都有自己的ApplicationContext将是一个好处。不了解的是这样做的好处是什么,以及如何实现这些好处?

    这方面的经典用例是,在一个webapp中有多个Spring
    DispatcherServlet
    ,每个servlet都有自己的应用上下文,但需要在它们之间共享bean。在本例中,您将在webapp级别添加第三个上下文,它是每个servlet AppContext的父级

    例如,如果将多个webapps捆绑到一个javaeeear中,则可以进一步采用这种模式。在这里,EAR可以有自己的上下文,它是各个webapp上下文的父上下文,它是servlet上下文的父上下文,等等。你有这样的责任层次


    在其他情况下,上下文结构由其他因素决定。例如,SpringSecurity独立于SpringMVC,并要求其配置bean在webapp上下文中运行。如果您想使用Spring MVC,那么它的配置必须进入servlet上下文,该上下文以根webapp上下文为父上下文。

    在进一步阅读时,理解以下内容(skaffman已经指出了其中的部分内容)。对于每个DispatcherServlet,每个Spring MVC webapp都有一个根应用程序上下文和一个servlet应用程序上下文。根应用程序上下文是每个servlet应用程序上下文的父级。在“contextConfigLocation”(web.xml中的context参数)中定义的bean被加载到根应用程序上下文中。-servlet.xml中的bean被加载到servlet应用程序上下文中。如果一个EAR有多个web应用程序,EAR级别的应用程序上下文可以作为EAR中每个web应用程序的根上下文的父级。嗨!您提供的链接似乎没有指向关于spring上下文的文章:)谢谢您指出@aggredi。我已经提到了这个联系。