Spring可以在非Web应用程序中使用
由于Web应用程序入口是被Web服务器控制的,所以无法在main()
方法中通过创建ClassPathXmlApplicationContext
对象来启动Spring容器.
Spring提供了一个监听类org.srpingframework.web.context.ContextLoaderListener
来解决这个问题.该监听器实现了ServletContextListener
接口,可以在Web容器启动的时候初始化Spring容器.
web.xml配置
<!-- 配置环境参数,指定Spring配置文件的位置 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/Spring-*.xml</param-value>
</context-param>
<!-- 配置Spring的ContextLoaderListener监听器,初始化Spring容器 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
其中,contextConfigLocation
参数用来指定Spring配置文件的路径.可以写文件全名,也可以想我一样使用"星号"通配符来加载多个spring的配置文件.
如果没有指定
contextConfigLocation
参数,ContextLoaderListener
默认会查找/WEB-INF/applicationContext.xml
.换句话说,如果我们将Spring 的配置文件命名为applicationContext.xml
并放在WEB-INF
目录下,即使不指定
contextConfigLocation
参数,也能实现配置文件的加载.
注意:contextConfigLocation
是ContextLoaderListener
类的属性.