【问题标题】:Application context and spring context is same?应用上下文和spring上下文是一样的吗?
【发布时间】:2012-01-20 02:24:36
【问题描述】:

我是spring MVC的新手,刚刚开始研究它。我想知道应用程序上下文(web-applicationcontext)和spring提供的上下文,即spring-servlet.xml是否相同或不同.

希望有人能给我一个更好的想法来解决这个困惑。

【问题讨论】:

    标签: spring web-applications applicationcontext


    【解决方案1】:

    应用程序上下文和 servlet 上下文之间的区别在于,应用程序上下文中指定的任何内容都可以在 servlet 上下文中引用,反之则不行。

    也就是说,您可以在应用程序上下文级别指定通过 servlet 重用的组件,但是可以在此处指定仅特定于某个 servlet 的某些内容,以将它们与应用程序和其他 servlet 隔离。

    如果您需要细粒度的控制,那就可以了。

    【讨论】:

    • 感谢 filip,所以如果我在应用程序级别(在 applicationContext 文件中)创建映射,也可以在 servlet 上下文中访问?
    • 是的,对于模型之类的东西,您可能希望所有 servlet 都可以访问,您可以在应用程序上下文中指定它们。例如,如果您在某个 servlet 上下文中指定控制器,您将无法解析位于其他 servlet 上下文中的控制器,至少不能直接和轻松地解析。如果你这样做了,你就不会冒险解决冲突或污染你的上下文不应该是它的一部分的组件。但是,如果您需要细粒度的控制,这一切都是真的——大多数应用程序甚至没有一个以上的 servlet 上下文。
    【解决方案2】:

    您可以将它们视为同一个文件。查看this answer了解更多详情。

    【讨论】:

      【解决方案3】:

      *-servlet.xml 提供的应用程序上下文是 WebApplicationContext,请参阅here 了解更多信息。根应用程序由 contextLoader 监听器创建。

      引用 Spring 参考,

      “在web MVC框架中,每个DispatcherServlet都有自己的WebApplicationContext,它继承了根WebApplicationContext中已经定义的所有bean。

      WebApplicationContext 是普通 ApplicationContext 的扩展,它具有 Web 应用程序所需的一些额外功能。它与普通的 ApplicationContext 不同之处在于它能够解析主题(参见第 15.7 节,“使用主题”),并且它知道它与哪个 servlet 相关联(通过链接到 ServletContext)。 WebApplicationContext 绑定在 ServletContext 中,通过使用 RequestContextUtils 类上的静态方法,如果需要访问它,您可以随时查找 WebApplicationContext。"

      您可以找到根应用程序上下文here的详细信息

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-08-13
        • 1970-01-01
        • 2019-08-13
        • 2016-01-14
        • 1970-01-01
        • 2014-07-24
        • 1970-01-01
        • 2020-09-25
        相关资源
        最近更新 更多