1

我正在使用spring3.x。我的应用程序中有以下配置文件。

applicationContext.xml
spring-ws-servlet.xml

web.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什么样的豆子,我们需要保留什么样的豆子spring-ws-servlet.xml?为什么我们都需要?我要保留所有内容applicationContext.xml并删除spring-ws-servlet.xml吗?

如果我两者都有,那么我应该在另一个中导入一个吗?请帮我。

谢谢!

4

2 回答 2

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侦听器负责启动和停止 Springroot ApplicationContext接口,该接口加载applicationContext.xml. 它通过查看<context-param>标签来找到要使用的配置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是接口的子接口root ApplicationContext通常,Spring MVC 特定的组件在 DispatcherServlet 的 ApplicationContext 接口中初始化,而其余的则由ContextLoaderListener.

a 中的bean child ApplicationContext(如DispatcherServlet 创建的bean)可以引用其父ApplicationContext 的bean(如ContextLoaderListener 创建的bean)。但是,parent ApplicationContext不能引用child ApplicationContext.

于 2013-10-23T13:54:22.060 回答
1

我们正在处理两种类型的上下文:

1:根上下文(父上下文。通常包括所有jdbc(ORM,Hibernate)初始化和其他spring security相关的配置)

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>

于 2015-02-24T11:10:29.567 回答