2011-01-12 18 views
2

Ich versuche, einen Eigenschaftswert mithilfe der Feder festzulegen.Einstellen der Feder-Bean-Eigenschaft mit ref-bean

<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"/> 

jetzt, was ich tun muß, ist das Ergebnis von getLoaderPath in file.resource.loader.path einzufügen. Der Wert von getLoaderPath ändert sich, so dass er beim Serverstart geladen werden muss.

Irgendwelche Gedanken, wie ich den velocityResourcePath-Wert in die Eigenschaft einfügen kann?

Antwort

4

mit Spring 3, können Sie die mittlere Stufe überspringen und die Fabrik direkt SpringEL mit aufzurufen:

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

oder vielleicht

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

Dies würden Sie die velocityResourcePath Bohne entfernen.

+0

Danke für die Antwort. Ich habe es versucht und den folgenden Fehler erhalten. Ich verwende spring 2.0 - org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Zeile 17 im XML-Dokument von der Klassenpfadressource [velocity-context.xml] ist ungültig; verschachtelte Ausnahme ist org.xml.sax.SAXParseException: Der Inhalt des Elementtyps "prop" muss mit "null" übereinstimmen. verursacht durch: org.xml.sax.SAXParseException: Der Inhalt des Elementtyps "prop" muss mit "null" übereinstimmen. – Pushkar

+0

kann nicht

+0

@Trever: Guter Punkt. Fixed (Art von). – skaffman

1

Unten Code könnte Ihnen helfen.

<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>