9

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

<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}などの変数を使用して、どの変数が呼び出されているかを知るために、プロパティを読み取るにはどうすればよいですか?

助けてくれてありがとう!

4

2 に答える 2

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>
于 2012-05-03T14:48:20.093 に答える
1

私がすることは、PropertyPlaceHolderConfigurer を拡張することだと思います。

私には、メソッドをオーバーライドする必要があるようですPropertiesLoaderSupport.loadProperties(Properties)

私がしたいことは、プロパティ「プレフィックス」を追加することです

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

プロパティ リソースを読み取りながら、これらのプレフィックスを反復処理します。

于 2012-05-03T14:48:29.380 に答える