Spring为ApplicationContext提供了很多实现类,其中有三个比较常用的:ClassPathXmlApplicationContext,FileSystemXmlApplicationContext,XmlWebApplicationContext。那么,我们项目启动的时候到底加载的那个类呢?答案是通过web.xml配置的。
如果web.xml是下面这种方式:
<!--spring 上下文-->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
这种是利用 XmlWebApplicationContext
上下文来配置 Spring Web 应用程序,即在 Web 部署描述符文件 web.xml 中指定外部 XML 上下文文件的路径。XMLWebApplicationContext
是 Web 应用程序使用的默认上下文类。以下代码描述了 web.xml
中指向将由 ContextLoaderListener
监听器类载入的外部 XML 上下文文件的元素。spring是通过ClassPathXmlApplicationContext实现类实现容器注入的。
如果web.xml是下面这种方式:
<context-param>
<param-name>contextClass</param-name>
<param-value>
org.springframework.web.context.
support.AnnotationConfigWebApplicationContext
</param-value>
</context-param>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
com.AppContextApplication
</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
spring是通过AnnotationConfigWebApplicationContext实现类实现容器注入的。