Web.xml(Tomcat)与ApplicationContext.xml(Spring),哪个先加载?

4

我试图理解Web应用程序的web.xml和applicationcontext.xml之间的控制流。请问有人能够解释哪个先加载吗?

2个回答

7

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

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

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


3

Servlet容器(Tomcat、Jetty等)将在启动时读取web.xml并实例化其中定义的各种servlet/filter/listener。其中一个过滤器或servlet很可能由Spring提供,然后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上下文,其中Spring bean“ live”。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接