2012-05-03 14 views
6

Mam do czynienia z prostym problemem tutaj. Mam dwa pliki właściwości, które chcę odczytać, aby utworzyć dwa źródła danych. Jednak te pliki właściwości mają dokładnie te same klucze! Jestem w stanie odczytać zarówno plików za pomocą:Jak odczytać wiele właściwości mających te same klucze na wiosnę?

<context:property-placeholder 
    location="classpath:foo1.properties,classpath:foo2.properties"/> 

Ale nie jestem w stanie uzyskać dostęp do właściwej wartości:

<bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource" 
    destroy-method="close"> 
    <property name="driverClassName" value="${driver}" /> <!-- Which one? --> 
    <property name="url" value="${url}" />    <!-- Which one? --> 
    ... 
</bean> 

Jak można odczytać moje właściwości tak, że mogę używać zmiennych, takich jak: ${foo1.driver} i wiedzieć, który z nich nazywa się?

Dzięki za pomoc!

Odpowiedz

6

Spróbuj coś takiego (nie testowane):

<bean id="config1" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
     <property name="ignoreUnresolvablePlaceholders" value="true"/> 
     <property name="placeholderPrefix" value="${foo1."/> 
     <property name="locations"> 
     <list> 
      <value>classpath:foo1.properties</value> 
     </list> 
     </property> 
    </bean> 

    <bean id="config2" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
     <property name="ignoreUnresolvablePlaceholders" value="false"/> 
     <property name="placeholderPrefix" value="${foo2."/> 
     <property name="locations"> 
     <list> 
      <value>classpath:foo2.properties</value> 
     </list> 
     </property> 
    </bean> 
+0

Fajny hack! (+1) –

+0

Działa doskonale! Wielkie dzięki! –

1

myślę, co bym zrobił to przedłużyć PropertyPlaceHolderConfigurer.

Dla mnie to wygląda jak trzeba zastąpić metodę PropertiesLoaderSupport.loadProperties(Properties)

Co zrobiłbym to dodać obiekt „przedrostki”

public void setPrefixes(List<String> prefixes){ 
    this.prefixes = prefixes; 
} 

I iteracyjne nad te prefiksy podczas odczytywania właściwości zasobów.

Powiązane problemy