Web.xml(tomcat)vs ApplicationContext.xml(spring)首先加载?

时间:2014-05-13 22:28:51

标签: java spring tomcat spring-mvc

尝试了解web应用程序的web.xml和applicationcontext.xml之间的控制流程。有人可以先解释哪些加载?

2 个答案:

答案 0 :(得分:6)

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

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

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

答案 1 :(得分:3)

servlet容器(Tomcat,Jetty等)将在启动时读取web.xml并实例化那里定义的各种servlet / filters / listener。其中一个过滤器或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 bean“live”。