Spring 在 org.springframework.web.util 包中提供了幾個特殊用途的 Servlet 監聽器,正確地使用它們可以完成一些特定需求的功能。
比如某些第三方工具支持通過 ${key} 的方式引用系統參數(即可以通過 System.getProperty() 獲取的屬性),
WebAppRootListener 可以將 Web 應用根目錄添加到系統參數中,對應的屬性名可以通過名為“webAppRootKey”的 Servlet 上下文參數指定,默認為“webapp.root”。
下面是該監聽器的具體的配置:
清單 6. WebAppRootListener 監聽器配置
… <context-param> <param-name>webAppRootKey</param-name> <param-value>baobaotao.root</param-value> ① Web 應用根目錄以該屬性名添加到系統參數中 </context-param> … ② 負責將 Web 應用根目錄以 webAppRootKey 上下文參數指定的屬性名添加到系統參數中 <listener> <listener-class> org.springframework.web.util.WebAppRootListener </listener-class> </listener> …
這樣,您就可以在程序中通過 System.getProperty("baobaotao.root") 獲取 Web 應用的根目錄了。
不過更常見的使用場景是在第三方工具的配置文件中通過 ${baobaotao.root} 引用 Web 應用的根目錄。
比如以下的 log4j.properties 配置文件就通過 ${baobaotao.root} 設置了日志文件的地址:
log4j.rootLogger=INFO,R
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=${baobaotao.root}/WEB-INF/logs/log4j.log ① 指定日志文件的地址
log4j.appender.R.MaxFileSize=100KB
log4j.appender.R.MaxBackupIndex=1
log4j.appender.R.layout.ConversionPattern=%d %5p [%t] (%F:%L) - %m%n
http://blog.sina.com.cn/s/blog_7003af290101j2cu.html
