有一个基于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
?
答案 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>