Spring MVC 中的不同上下文是如何工作的?

Posted

技术标签:

【中文标题】Spring MVC 中的不同上下文是如何工作的?【英文标题】:How do the different contexts in Spring MVC work? 【发布时间】:2015-07-14 07:59:08 【问题描述】:

我的 Spring MVC Webapp 有以下配置。我想从概念上知道 servlet-context.xml 中的 contextConfigLocation (它是 appServlet 的 conf)和其他文件的安全性、瓷砖...我不明白它是如何工作的,因为如果我把我在 servlet-context 中的 tiles-context.xml 配置应用程序可以工作,在其他情况下没有,但安全性工作正常。此文件中的 Bean 也不在 appServlet 容器中吗?是否有多个上下文?

<!-- DispatcherServlet Conf - Processes application requests -->
<servlet>
    <servlet-name>appServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:servlet-context.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>appServlet</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>


<!-- Spring configuration files in XML -->
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
        classpath:security-context.xml
        classpath:tiles-context.xml
        ...
    </param-value>
</context-param>

【问题讨论】:

你可以看看这个链接***.com/questions/16860016/….similar question 【参考方案1】:

看看

Spring root application context and servlet context confusion

What is the difference between ApplicationContext and WebApplicationContext in Spring MVC?

关于根上下文和 servlet 上下文的区别。

您可以使用如下配置定义多个 servlet 上下文

<servlet>
<servlet-name>api-dispatcher</servlet-name>
<servlet-class>
    org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<init-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>/WEB-INF/api-dispatcher-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>api-dispatcher</servlet-name>
<url-pattern>/rest/*</url-pattern>

当 url 模式为 /rest/* 时,可以访问以上上下文。这就是在 spring 上配置多个单独上下文的方式。

【讨论】:

以上是关于Spring MVC 中的不同上下文是如何工作的?的主要内容,如果未能解决你的问题,请参考以下文章

SPRING MVC - 使用外部文件作为@PropertySource

如何在 Spring.Net 应用程序上下文中添加 ASP.NET MVC 控制器?

如何使用 spring 3.2 新 mvc 测试登录用户

ContextLoaderListener和Spring MVC中的DispatcherServlet学习 随手记

了解 Spring MVC 中的上下文

在 spring-boot 项目中使用 spring mvc xml 项目