【问题标题】:Web.xml(tomcat) vs ApplicationContext.xml(spring) which loads first?Web.xml(tomcat) 与 ApplicationContext.xml(spring) 哪个先加载?
【发布时间】:2014-07-01 19:13:45
【问题描述】:

我试图了解 web 应用程序的 web.xml 和 applicationcontext.xml 之间的控制流。谁能解释一下先加载哪个?

【问题讨论】:

    标签: java spring tomcat spring-mvc


    【解决方案1】:

    Spring MVC 是一个构建在 Servlet API 之上的框架。因此,它需要一个 Servlet 容器。

    您的 Servlet 容器找到 web.xml 或使用任何其他部署策略(取决于容器),找到要实例化的 Servlet 实现(或通过 @WebServlet)并实例化它们。

    其中一个Servlet 实现是Spring 的DispatcherServlet,作为其初始化的一部分,它会生成一个ApplicationContext,然后用于配置其控制器和调度请求。

    【讨论】:

      【解决方案2】:

      servlet 容器(Tomcat、Jetty 等)将在启动时读取 web.xml 并实例化其中定义的各种 servlet/过滤器/侦听器。这些过滤器或 servlet 之一很可能由 Spring 提供,然后它将读取 applicationContext.xml 并初始化 Spring 上下文。

      例如,您的 web.xml 可能包含以下内容:

      <servlet>
         <servlet-name>dispatcher</servlet-name>
         <servlet-class>
           org.springframework.web.servlet.DispatcherServlet
         </servlet-class>
         <init-param>
           <param-name>contextConfigLocation</param-name>
           <param-value>/WEB-INF/spring/applicationContext.xml</param-value>
         </init-param>
         <load-on-startup>1</load-on-startup>
       </servlet>
      

      该 servlet 将读取并创建 Spring bean “活动”的 Spring 上下文。

      【讨论】:

        猜你喜欢
        • 2016-04-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-31
        • 2011-10-12
        • 1970-01-01
        • 1970-01-01
        • 2018-01-30
        相关资源
        最近更新 更多