如何将属性文件中的数据加载到bean属性值中?

时间:2011-09-13 16:10:44

标签: java xml spring properties javabeans

我正在关注以下文章。

http://www.mkyong.com/spring/spring-quartz-scheduler-example/

一切正常。

<bean id="simpleTrigger"

    class="org.springframework.scheduling.quartz.SimpleTriggerBean">

    <property name="jobDetail" ref="runMeJob" />
    <property name="repeatInterval" value="5000" />
    <property name="startDelay" value="1000" />

</bean>

我创建了一个属性文件app.properties,其中包含

 repeatInterval = 5000
 startDelay = 1000

我想将这些数据加载到bean属性中。现在我必须将值硬编码到xml文件中。

我希望能够将属性文件中的数据加载到bean属性中。有可能吗?

编辑:

我有

<property name="repeatInterval" value="5000" />

我正在寻找的是一种方法

<property name="repeatInterval" value= "get 5000 from property file" />

3 个答案:

答案 0 :(得分:3)

要查找类路径中的文件myPropertyFileName.properties并将其加载到spring配置中,请创建以下bean:

<bean id="myPropertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
  <property name="location" value="classpath:myPropertyFileName.properties"/>
  <property name="placeholderPrefix" value="${props:"/>
</bean>

然后使用定义为

的属性名称
repeatInterval=5000 
像这样:

<property name="repeatInterval" value="${props:repeatInterval}"/>

答案 1 :(得分:0)

使用Spring propertyPlaceholderConfigurer来实现此目的。 Follow this guide

答案 2 :(得分:0)

过去我遇到过类似的事情。我需要使用Spring加载一堆bean,但我希望它们是用户可编辑的bean文件。因此我不想将它们包含在罐子包装中。我所做的是在jar之外创建我的用户定义的bean文件,但是在一个已知的相对位置。我的打包bean定义文件引用了用户定义的bean文件中定义的bean,当我加载应用程序上下文时,我提供了两个文件(用户定义和打包)。

有点不正统,但有效。