spring的好处--PropertyPlaceholderConfigurer

 

我的程序终于又进展了,基本功能已经实现了,开始开发WEB界面了。这是却出现了一个问题。原先的Encoder需要指定一个配置文件目录,然后将这个目录下的所有文件读入。

 <bean id="encoder" class="test.Encoder" init-method="init">
  <property name="resourceDirectory"><value>WEB-INF/lib/wbxml</value></property>
 </bean>
当在命令行下调试时他工作的很好,但是当在tomcat下运行时却报告说找不到该目录。这是当然,因为tomcat下相对目录不在正确。通常情况下的解决办法是用ServletContext.getRealPath得到绝对路径。这是这样Encoder却额外的需要增加对ServletContext的依赖,这是我所不愿意看到的。

幸好发现了PropertyPlaceholderConfigurer,最后的解决方案是

 <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" />

 <bean id="encoder" class="test.Encoder" init-method="init">
  <property name="resourceDirectory"><value>${webapp.root}/WEB-INF/lib/wbxml</value></property>
 </bean>
原来PropertyPlaceholderConfigurer可以将${...}替换为指定的properties文件或system properties中的值,而spring在Log4jConfigListener或是WebAppRootListener会指定一个system property表示web root的值,default是webapp.root。

不幸的是目前spring1.0.2似乎有一个BUG,PropertyPlaceholderConfigurer不能正确地工作在Inner Bean中,我已提交了这个问题,希望很快能解决。

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值