一.
1. ContextLoaderListener
配置信息:
<listener>
<listener-class>
org.t.ContextLoaderListener
</listener-class>
</listener>
配置解释:
ContextLoaderListener的作用就是启动Web容器时,自动装ApplicationContext的配置信息。因为它实现了ServletContextListener这个接口,在l配置这个,启动容器时,
就会默认执行它实现的方法。至于l这个配置文件部署在哪,如何配置多个xml文件,书上都没怎么详细说明。现在的方法就是查看它的API文档。在ContextLoaderListener中关联了ContextLoader这个类,所以整个加载配置过程由ContextLoader来完成。看看它的API说明
第一段说明ContextLoader可以由 ContextLoaderListener和ContextLoaderServlet生成。如果查看ContextLoaderServlet的API,可以看到它也关联了ContextLoader这个类而且它实现了HttpServlet接口。
第二段,ContextLoader创建的是 XmlWebApplicationContext这样一个类,它实现的接口WebApplicationContext->ConfigurableWebApplicationContext->ApplicationContext->
BeanFactory,这样一来spring中的所有bean都由这个类来创建。
第三段,讲如何部署applicationContext的xml文件,如果在l中不写任何参数配置信息,默认的路径是"/l,在WEB-INF目录下创建的xml文件的名称必须是l。如果是要自定义文件名可以在l里加入contextConfigLocation这个context参数:
view plaincopy to clipboardprint?
<context-param> 
        <param-name>contextConfigLocation</param-name> 
        <param-value> 
            /WEB-INF/classes/applicationContext-*.xml 
        </param-value> 
</context-param> 
在<param-value> </param-value>里指定相应的xml文件名,如果有多个xml文件,可以写在一起并一“,”号分隔。上面的applicationContext-*.xml采用通配符,比如这那个目录下有l,l,l等文件,都会一同被载入。
由此可见l的文件位置就可以有两种默认实现:
第一种:直接将之放到/WEB-INF下,之在l中声明一个listener、
第二种:将之放到classpath下,但是此时要在l中加入<context-param>,用它来指明你的l的位置以供web容器来加载。按照Struts2 整合spring的官方给出的档案,写成:
view plaincopy to clipboardprint?
 
<context-param> 
<param-name>contextConfigLocation</param-name>   
<param-value>
    /WEB-INF/applicationContext-*.xml,classpath*:applicationContext-*.xml
</param-value> 
</context-param>
2. Log4jConfigListener
配置信息:
1. <context-param>      
2.     <param-name>webAppRootKey</param-name>      
3.     <param-value>xx.root</param-value> 
4. </context-param>      
5.  
6. <context-param>      
7.     <param-name>log4jConfigLocation</param-name>      
8.     <param-value>/WEB-INF/l</param-value>      
9. </context-param>      
10.  
11. <context-param>      
12.     <param-name>log4jRefreshInterval</param-name>      
13.     <param-value>60000</param-value>      
14. </context-param>   
15.    
16. <listener>      
17.     <listener-class>org.springframework.web.util.Log4jConfigListener
18.     </listener-class>      
19. </listener>
配置解释:
使用spring中的Log4jConfigListener有如如下好处: 
1. 动态的改变记录级别和策略,不需要重启Web应用
2. log文件定在 /WEB-INF/logs/ 而不需要写绝对路径。
因为 系统把web目录的路径压入一个叫的系统变量。这样写log文件路径时不用写绝对路径了.
log4j.appender.logfile.File=${}/WEB-INF/logs/myfuse.log 
3. 可以把log4j.properties和其他properties一起放在/WEB-INF/ ,而不是Class-Path
4.log4jRefreshInterval60000,表示开一条watchdog线程每60秒扫描一下配置文件的变化.
5.<context-param>
<param-name>webAppRootKey</param-name>param name
<param-value></param-value>
</context-param>
* 可以用Property("")来获取属性值。在Eclipse调试Web项目时,项目的路径是一个临时路径,不在真正的路径下,可以通过上述语句打印出属性值,来看看临时项目路径在哪里。
* Spring通过 org.springframework.web.util.WebAppRootListener
这个来压入项目路径。但是如果在l中已经配置了 org.springframework.web.util.Log4jConfigListener这个,则不需要配置WebAppRootListener了。
* 因为Log4jConfigListener已经包含了WebAppRootListener的功能部署在同一容器中的Web项目,要配置不同的<param-value>,不能重复。
* 如果配置了log4j.appender.file.File=${}/WEB-INF/logs/sample.log 
log4j会自己自动建立logs目录, 不需要手工显式建立空的logs目录。
l配置示例:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j='/log4j/'>

<appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
  <layout class="org.apache.log4j.PatternLayout">
      <param name="ConversionPattern" value="%d{ABSOLUTE} %5p %c{1}:%L - %m%n"/>
  </layout>
</appender>
 


<appender name="DEBUG" class="org.apache.log4j.RollingFileAppender">
  <param name="File" value="C:\\logs\\app-debug.log"/>
  <param name="Append" value="true"/>
  <param name="MaxFileSize" value="500MB"/>
  <param name="MaxBackupIndex" value="2"/>
  <layout class="org.apache.log4j.PatternLayout">
      <param name="ConversionPattern" value="%d{ABSOLUTE} %5p %c{1}:%L - %m%n"/>
  </layout>
  <filter class="org.apache.log4j.varia.LevelRangeFilter">
      <param name="LevelMin" value="DEBUG" />
      <param name="LevelMax" value="DEBUG" />
  </filter>
</appender>

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。