Maven-Profile, Platzhalter und Springs JpaTransactionManager

Ich wollte gerade in einer meiner Spring-Beans eine Property abhängig vom gesetzten Maven-Profil setzen lassen:

<bean id="wicketApplication">
<property name="localImagesRootDir">
<value>${tilto.imgRootDir}</value>
</property>
</bean>

Im entsprechenden Maven-Profil fand sich demnach:

<profile>
<id>production</id>
<properties>
<tilto.imgRootDir>/usr/local/tomcat/webapps</tilto.imgRootDir>
</properties>
</profile>

Und was meldet mir die Applikation beim hochfahren?

org.springframework.beans.factory.BeanDefinitionStoreException: Invalid bean definition with name ‘wicketApplication’ defined in class path resource [applicationContext.xml]: Could not resolve placeholder ’tilto.imgRootDir’

Merkwürdig, dass hatte ich doch an anderer Stelle ebenso gemacht und es funktionierte? Nach einer Stunde herumprobieren, habe ich die Bean an eine andere Stelle in der applicationContext.xml kopiert. Und siehe da: es funktioniert. Scheinbar funkt folgende Zeile dazwischen, wenn die Platzhalter ersetzt werden sollen:

<tx:annotation-driven transaction-manager="transactionManager" />

Ist die Bean vor dieser Zeile deklariert, funktioniert es. Findet sich die Bean hinter dieser Zeile, funktioniert es nicht mehr. Das soll mal einer verstehen.

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>