【问题标题】:spring configuration files relationship?spring配置文件的关系?
【发布时间】:2013-10-23 13:30:46
【问题描述】:

我正在使用 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 中保留什么样的bean,我们需要在spring-ws-servlet.xml 中保留什么样的bean?为什么我们都需要?我应该保留applicationContext.xml 中的所有内容并删除spring-ws-servlet.xml 吗?

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

谢谢!

【问题讨论】:

    标签: java spring java-ee-6 spring-ioc


    【解决方案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。它通过查看&lt;context-param&gt; 标记为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>
    

    DispatcherServlet 创建的ApplicationContextroot ApplicationContext 接口的子接口。 通常,Spring MVC 特定的组件 在 DispatcherServlet 的 ApplicationContext 接口中初始化,而 其余的由ContextLoaderListener 加载。

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

    【讨论】:

      【解决方案2】:

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

      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>
      

      【讨论】:

        猜你喜欢
        • 2011-03-21
        • 1970-01-01
        • 2020-04-01
        • 2016-02-05
        • 2016-10-02
        • 2020-05-07
        • 1970-01-01
        • 2016-11-26
        • 2019-02-22
        相关资源
        最近更新 更多