web配置文件与Spring详解

阅读更多

在web.xml中定义contentConfigLocation参数,Spring会使用这个参数加载所有逗号分隔的.xml文件,Spring默认加载web-INF下的applicationContext.xml文件.


     contentConfigLocation
     classpath*:config/applicationContext.xml,classpath*:config/applicationContext-shiro.xml
     

    contencConfigLocation参数定义了要装入Spring的配置文件,装入的原理说明如下:

Sping中提供ServletContentListener的一个实现类contentLoaderListener,该类可以做一个Listener使用,如果要装入的配置文件只用一个并且名称为applicationContent.xml时,则只需要在文件中加入以下代码即可:


  org.springframework.web.context.ContextLoaderListener

 如果要装入的配置文件有多个时,则需要使用确定文件名称,由于contentLoaderListener加载时会查找名为contentConfigLocation的参数,因此,在定义的名称时使用contentConfigLocation.

有多个配置文件如下配置:

  
    contextConfigLocation
    
		classpath*:config/applicationContext.xml,classpath*:config/applicationContext-shiro.xml
		
  
  
    webAppRootKey
    EPMAS.webapp.root
  
  
    log4jConfigLocation
    /WEB-INF/log4j.properties
  
  
    org.springframework.web.util.Log4jConfigListener
  
  
    org.springframework.web.context.ContextLoaderListener
  

 如果没有contentConfigLocation参数指定的配置文件,则Spring会自动的查找applicationContent.xml配置文件;如果配置有contentConfigLocation参数指定的配置文件,该参数指定的是一个字符串,Spring的contentLoaderListener负责将该字符串分解成多个配置文件,逗号,空格,分号多可以作为分隔符;如果没有contentConfigLocation参数指定为配置文件,也没有名称为applicationContent.xml的配置文件,都会导致Spring无法加载配置文件或者创建applicationContent实例异常.

       注意:使用contentLoaderListener类来实现配置文件的装入仅适用于适用于Servlet2.4及以上规范Servlet容器。

基于contentLoaderServlet类来实现Spring配置文件的装入可以适用于servlet2.3以下规范的servlet容器: 


    contextConfigLocation
    
			classpath*:config/applicationContext*.xml
		
  

   context
     
        org.springframework.web.context.ContextLoaderServlet
     
1

 Spring 提供了一个特殊的Servllet 类: ContextLoaderServlet。该Servlet 在启动时,会自动查找WEB-INF下的applicationContext. xml 文件。当然,为了让ContextLoaderServlet 随应用启动而启动,应将此Servlet 配置成load-on-startup 的Servleto load-on-startup 的值小一点比较合适,因为要保证ApplicationContext 优先创建。 

从servlet容器启动时加载组件的顺序来看(ServletContext-> listener ->filter -> servlet),Listener组件是优先于Servlet组件的。基于Servlet方式的加载方案主要是为了兼容Servlet2.3及以下规范的Servlet容器。以Tomcat为例,Tomcat 5.x都已经支持Servlet2.4规范了,因此,基于Listener方式启动Spring容器是目前的主流选择。

 

你可能感兴趣的:(spring,xml)