我们都知道应用spring时,都需要加载applicationContext.xml文件.如果您以前接触过spring的话,一定知道在java应用程序里一定可以找到加载applicationContext.xml的语句.比如:
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
但是在web应用开发中是否也需要这样加载呢?答案是肯定的,只是加载方法形式不一样.
下面为大家详细解绍两种加载方案:
1.通过contextLoaderListener 来加载applicationContext.xml
spring提供了一个ContextLoaderLister类,该类可以作为Web应用的Lister(监听器)使用,它会在Web应用启动时自动查找WEB-INF/下的applicationContext.xml配置文件,并且根据该文件来创建spring容器.
如果应用程序中只有一个spring配置文件的话,且文件名为:applicationContext.xml则可以在web.xml进行如下配置:
<listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener>
如果有多个配置文件需要截入,那么可以通过使用<context-param>元素来确定配置文件的文件名.ContextoaderListener加载时,会查找名为"contextConfigLocation"的参数,因此配置context-param时参数名字应该是"contextConfigLocation".
下面为多个配置文件的形式:
<context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/aaa.xml,/WEB-INF/bbb.xml</param-value> </context-param>
2.利用load-on-startup Servlet 来加载applicationContext.xml
前面一种配置方法简单,但有局限性,因为它只能用在servlet2.3以上规范,也就是说如果web服务器不支持servlet2.3以上的规范,那么就不能用Listner来创建spring容器.
如果我们的web服务器不支持servlet2.3以上规范,那么我们通过什么来创建?
标题已给出
下面给出范例:
<servlet> <servlet-class>org.springframework.web.context.contextLoaderServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet>
load-on-startup级别越低越先加载!
原创,引用请注名出处!