首 页最新软件下载排行文章资讯投稿发布下载专题
维维下载站
您的位置:首页编程开发网络编程编程其它 → BeanFactoryPostProcessor介绍及使用技巧

BeanFactoryPostProcessor介绍及使用技巧

来源:维维整理 发布时间:2010-8-6 10:18:00 人气:

BeanFactoryPostProcessor接口是对Bean工厂的后处理操作,那么下面就给大家分享关于BeanFactoryPostProcessor介绍及使用技巧一览。

在Spring 的PropertyPlaceholderConfigurer 类是实现BeanFactoryProcessor 接口中非常有用的类。它用于Spring 从外部属性文件中载入属性,并使用这些属性值替换Spring 配置文件中的占位符变量(${varible})。

Spring 的ApplicationContext 容器可以非常方便的使用PropertyPlaceholderConfigurer,只需通过简单的配置即可使用。

示例:
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="jdbc.properties" />
</bean>

如果需要使用多个配置文件可以使用PropertyPlaceholderConfigurer 的locations属性。

示例:
程序终于又进展了,基本功能已经实现了,开始开发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。

相关下载
栏目导航
本类热门阅览