使用ref-bean设置spring bean属性值

时间:2011-01-12 23:24:30

标签: java spring velocity

我正在尝试使用spring设置属性值。

<bean id="velocityPropsBean" class="com.test.CustomProperties" abstract="false" singleton="true" lazy-init="false" autowire="default" dependency-check="default">
    <property name="properties">
   <props>
        <prop key="resource.loader">file</prop>
        <prop key="file.resource.loader.cache">true</prop>
        <prop key="file.resource.loader.class">org.apache.velocity.runtime.resource.loader.FileResourceLoader</prop>
        <prop key="file.resource.loader.path">NEED TO INSERT VALUE AT STARTUP</prop>

    </props>

    </property>
</bean>

<bean id="velocityResourcePath" class="java.lang.String" factory-bean="velocityHelper" factory-method="getLoaderPath"/>

现在我需要做的是将getLoaderPath的结果插入到file.resource.loader.path中。 getLoaderPath的值发生了变化,因此必须在服务器启动时加载它。

我是否可以将velocityResourcePath值插入属性?

2 个答案:

答案 0 :(得分:4)

使用Spring 3,您可以跳过中间阶段,并使用SpringEL直接调用工厂:

<prop key="file.resource.loader.path">#{ velocityHelper.loaderPath }</prop>

或者

<prop key="file.resource.loader.path">#{ velocityHelper.getLoaderPath() }</prop>

这将允许您删除velocityResourcePath bean。

答案 1 :(得分:1)

以下代码可能会对您有所帮助。

<import resource="classpath:/DaoContext.xml"/>

<bean id="ClientMasterDao" class="dao.hibernate.impl.ClientMasterImpl">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>

<bean id="ClientMasterServices" class="client.ClientMasterServices">
<property name="clientDao" ref="ClientMasterDao"/>
</bean>