我正在尝试使用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值插入属性?
答案 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>