Laden Eigenschaften mit Feder (über den System Eigenschaften)

Mein problem ist wie folgt:

Habe ich server.properties für verschiedene Umgebungen. Den Weg zu diesen Eigenschaften bereitgestellt wird, der durch eine system-property namens propertyPath. Wie kann ich anweisen, meine applicationContext.xml zum laden der Eigenschaften mit dem angegebenen propertyPath system-Eigenschaft ohne hässliche MethodInvokingBean fordert System.getProperty('');

Meine applicationContext.xml

<bean id="systemPropertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE"/>
        <property name="placeholderPrefix" value="sys{"/>
        <property name="properties">
            <props>
                <prop key="propertyPath">/default/path/to/server.properties</prop>
            </props>
        </property>
    </bean>


    <bean id="propertyResource" class="org.springframework.core.io.FileSystemResource" dependency-check="all" depends-on="systemPropertyConfigurer">
        <constructor-arg value="sys{propertyPath}"/>
    </bean>

    <bean id="serviceProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
        <property name="location" ref="propertyResource"/>
    </bean>

    <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="location" ref="propertyResource"/>
        <property name="placeholderPrefix" value="prop{"/>

        <property name="ignoreUnresolvablePlaceholders" value="true"/>
        <property name="ignoreResourceNotFound" value="false"/>
    </bean>

    <bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
         <property name="jndiName" value="prop{datasource.name}"/>
    </bean>

mit dieser Konfiguration kann der propertyResource alsways beschwert sich über

java.io.FileNotFoundException: sys{propertyPath} (The system cannot find the file specified)

Irgendwelche Vorschläge? 😉
Dank gabe

EDIT:

Ich jetzt ausgetestet, der Ladevorgang der Bohnen und es scheint, die setLocation Methode der propertyConfigurer aufgerufen wird, bevor die systemPropertyConfigurer erstellt wird, damit die propertyResource initialisiert wird mit "sys{propertyPath}".
Ich spielte mit depends-on aber kein Glück.

  • wie genau haben Sie spielen, hängt davon ab,-auf?
  • 'propertyResource depends-on="systemPropertyConfigurer"' scheint keinen Einfluss. propertyResource ist erst initialisiert nichtsdestotrotz, vielleicht, weil es bei der Initialisierung mit Konstruktor-arg
InformationsquelleAutor n3utrino | 2010-05-07
Schreibe einen Kommentar