2012-05-03 28 views
6

Tôi đang đối mặt với một vấn đề đơn giản ở đây. Tôi có hai tệp thuộc tính mà tôi muốn đọc để tạo hai nguồn dữ liệu. Tuy nhiên, những tập tin thuộc tính có chính xác cùng một phím! Tôi có thể đọc cả các tập tin sử dụng:Làm thế nào để đọc nhiều thuộc tính có cùng khóa trong Spring?

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

Nhưng sau đó tôi không thể truy cập giá trị đúng:

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

Làm thế nào tôi có thể đọc tài sản của tôi để tôi có thể sử dụng các biến như ${foo1.driver} và biết cái nào được gọi?

Cảm ơn bạn đã trợ giúp!

Trả lời

6

Hãy thử một cái gì đó như thế này (không kiểm tra):

<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

Rất tiếc! (+1) –

+0

Nó hoạt động hoàn hảo! Cảm ơn rất nhiều! –

1

Tôi đoán những gì tôi muốn làm là mở rộng PropertyPlaceHolderConfigurer.

Đối với tôi có vẻ như bạn phải ghi đè lên các phương pháp PropertiesLoaderSupport.loadProperties(Properties)

Những gì tôi muốn làm là thêm một tài sản "tiền tố"

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

Và lặp qua các tiền tố khi đọc các nguồn lực Properties.

Các vấn đề liên quan