【发布时间】:2014-07-01 19:13:45
【问题描述】:
我试图了解 web 应用程序的 web.xml 和 applicationcontext.xml 之间的控制流。谁能解释一下先加载哪个?
【问题讨论】:
标签: java spring tomcat spring-mvc
我试图了解 web 应用程序的 web.xml 和 applicationcontext.xml 之间的控制流。谁能解释一下先加载哪个?
【问题讨论】:
标签: java spring tomcat spring-mvc
Spring MVC 是一个构建在 Servlet API 之上的框架。因此,它需要一个 Servlet 容器。
您的 Servlet 容器找到 web.xml 或使用任何其他部署策略(取决于容器),找到要实例化的 Servlet 实现(或通过 @WebServlet)并实例化它们。
其中一个Servlet 实现是Spring 的DispatcherServlet,作为其初始化的一部分,它会生成一个ApplicationContext,然后用于配置其控制器和调度请求。
【讨论】:
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 上下文。
【讨论】: