如何配置Spring MVC以通过ContextSingletonBeanFactoryLocator加载上下文

时间:2015-04-20 19:38:02

标签: java spring spring-mvc

有一个基于Spring 3.2的Web应用程序。以下是它在web.xml中的配置方式:

<servlet>
    <servlet-name>MY-REST-API</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>MY-REST-API</servlet-name>
    <url-pattern>/foo/*</url-pattern>
    <url-pattern>/bar/*</url-pattern>
</servlet-mapping>

Spring上下文由放置在类路径中的XML文件MY-REST-API-servlet.xml配置。你可以看到没什么不寻常的。

有一个代码不在ApplicationContext中。我正在寻找一种方法来使这段代码能够在我的Spring MVC应用程序中访问某些bean。 AFAIK ContextSingletonBeanFactoryLocator可用于解决此类问题。但是我对dubugger进行的小规模调查显示Spring MVC在加载上下文时默认不使用它。 getInstance()中的ContextSingletonBeanFactoryLocator个方法都没有被称为Spring MVC引导。因此,通过ContextSingletonBeanFactoryLocator接收的上下文与在引导期间加载的上下文不同。我认为如果我让Spring MVC在上下文加载过程中使用ContextSingletonBeanFactoryLocator,问题将得到解决。

有没有办法配置Spring MVC在引导期间使用ContextSingletonBeanFactoryLocator

1 个答案:

答案 0 :(得分:0)

更改您的web.xml文件添加context-param并指定xml文件,如下所述

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
        classpath:MY-REST-API-servlet.xml
</param-value>
</context-param>

 <servlet>
  <servlet-name>MY-REST-API</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  <init-param>classpath:MY-REST-API-servlet.xml  </init-param>
  <load-on-startup>1</load-on-startup>
</servlet>