2012-05-03 11 views
6

ここでは簡単な問題に直面しています。私は2つのデータソースを作成するために読みたい2つのプロパティファイルを持っています。しかし、これらのプロパティファイルにはまったく同じキーがあります。私が使用して両方のファイルを読み取ることができています:Springで同じキーを持つ複数のプロパティを読み取る方法は?

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

をしかし、私は右の値にアクセスすることはできませんよ。私のような変数を使用できるように

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

がどのように私は私のプロパティを読み取ることができますが${foo1.driver}と呼ばれていますか?

ありがとうございます!

答えて

6

この(テストしていない)のような何か試してみてください:私は私がしたいのかどうか推測

<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

ニースハック! (+1) –

+0

これは完璧に動作します!どうもありがとう! –

1

はPropertyPlaceHolderConfigurerを拡張しています。あなたは私がやるだろうどのような方法にPropertiesLoaderSupport.loadProperties(Properties)

を上書きする必要があるように見える私に

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

プロパティ「接頭辞」を追加し、プロパティのリソースを読みながら、これらのプレフィックスを反復です。

関連する問題