我使用的是spring3.x.我的应用程序中有以下配置文件。
applicationContext.xml
spring-ws-servlet.xml
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:config/applicationContext.xml</param-value>
</context-param>
<servlet>
<servlet-name>spring-ws</servlet-name>
<servlet-class>org.springframework.ws.transport.http.MessageDispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:config/spring-ws-servlet.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>spring-ws</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
我的问题是我们需要在applicationContext.xml
中保留哪种bean以及我们需要在spring-ws-servlet.xml
中保留哪种bean?为什么我们需要两者?我应该将所有内容保留在applicationContext.xml
并删除spring-ws-servlet.xml
吗?
如果我有两个,那么我应该互相导入吗?请帮帮我。
谢谢!
答案 0 :(得分:1)
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:config/applicationContext.xml</param-value>
</context-param>
您必须将侦听器定义为:
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
此ContextLoaderListener
侦听器负责启动和停止Spring root ApplicationContext
接口,该接口加载applicationContext.xml
中定义的bean。它通过查看<context-param>
的{{1}}标记找到要使用的配置。
contextConfigLocation
<servlet>
<servlet-name>spring-ws</servlet-name>
<servlet-class>org.springframework.ws.transport.http.MessageDispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:config/spring-ws-servlet.xml</param-value>
</init-param>
</servlet>
创建的ApplicationContext
是DispatcherServlet
界面的子级。 通常,Spring MVC特定的组件
在DispatcherServlet的ApplicationContext接口中初始化,同时
其余的由root ApplicationContext
加载。
ContextLoaderListener
中的bean(例如DispatcherServlet创建的bean)可以引用其父ApplicationContext的bean(例如ContextLoaderListener创建的bean)。但是,child ApplicationContext
无法引用parent ApplicationContext
的bean。
答案 1 :(得分:1)
我们正在处理两种类型的上下文:
1:根上下文(父上下文。通常包括所有jdbc(ORM,Hibernate)初始化和其他Spring安全相关配置)
2:单个servlet上下文(子上下文。典型Dispatcher Servlet上下文并初始化与spring-mvc相关的所有bean(控制器,URL映射等))。
以下是web.xml的示例,其中包含多个应用程序上下文文件
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<display-name>Spring Web Application example</display-name> <!-- Configurations for the root application context (parent context) --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <context-param> <param-name>contextConfigLocation</param-name> <param-value> /WEB-INF/spring/jdbc/spring-jdbc.xml <!-- JDBC related context --> /WEB-INF/spring/security/spring-security-context.xml <!-- Spring Security related context --> </param-value> </context-param> <!-- Configurations for the DispatcherServlet application context (child context) --> <servlet> <servlet-name>spring-mvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value> /WEB-INF/spring/mvc/spring-mvc-servlet.xml </param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>spring-mvc</servlet-name> <url-pattern>/admin/*</url-pattern> </servlet-mapping>