2012-05-03 4 views
6

저는 여기서 간단한 문제에 직면하고 있습니다. 두 개의 데이터 소스를 만들기 위해 읽으려는 두 개의 특성 파일이 있습니다. 그러나 이러한 속성 파일에는 정확히 동일한 키가 있습니다! 나는 사용하여 두 파일을 읽을 수 있어요 :스프링에서 같은 키를 가진 여러 속성을 읽는 방법은 무엇입니까?

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

을 무시하고 등록 정보 자원을 읽는 동안이 접두사를 반복해야처럼 나에게

것 같습니다.

관련 문제