2012-09-10 34 views
0

我可以使用多個屬性文件中的多個屬性創建類的multipe實例嗎?在Spring中使用PropertyPlaceholderConfigurer創建具有不同值的類的多個實例

<beans> 
    <bean class="xyz"> 
     <property name="abc">${abc}</property> 
    <property name="pqr">${pqr}</property> 
    </bean> 
<beans> 

現在我想創建豆類ABC和PQR的不同值的數量

一個XYZ實例爲ABC的一個值和焊接工藝評定爲ABC的其他價值 二XYZ實例和PQR

我可以使用PropertyPlaceholderConfigurer嗎?如果是,如何?

+0

還沒有答案。 :((((((((((((((((((((((((( – user978939

回答

0

我想不出任何開箱即用的方法 - 我能想到的唯一方法是使用自定義BeanFactoryPostProcessor。 BeanFactoryPostProcessors允許您在加載應用程序上下文時添加更多的bean定義,因此您可以編寫一個自定義代碼,該代碼根據您的屬性文件註冊更多的bean定義,並且它們將在運行時顯示爲bean。

1

屬性文件通常不包含重複鍵。因此,我假定你有不同的文件,每個不同的文件'abc','pqr'關鍵值,即:你想有一個實例/一個屬性文件。如果是這樣,那麼你可以加載所有的屬性文件,並創建這樣相應的bean定義:

<bean id="ppc1" 
    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
    <property name="location" value="classpath:/mya.properties" /> 
    <property name="placeholderPrefix" value="$a{" /> 
    <property name="placeholderSuffix" value="}" /> 
</bean> 

<bean id="ppc2" 
    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
    <property name="location" value="classpath:/myb.properties" /> 
    <property name="placeholderPrefix" value="$b{" /> 
    <property name="placeholderSuffix" value="}" /> 
</bean> 

<bean id="objectA" class="MyObject"> 
    <property name="field1" value="$a{abc}" /> 
    <property name="field2" value="$a{pqr}" /> 
</bean> 

<bean id="objectB" class="MyObject"> 
    <property name="field1" value="$b{abc}" /> 
    <property name="field2" value="$b{pqr}" /> 
</bean> 

選擇創建具有List<MyObject>實例變量一個「容器」豆。這將保存你的所有MyObject實例:

<bean id="myContainerBean" class="MyContainer"> 
    <property name="objects"> 
    <list> 
     <ref bean="objectA" /> 
     <ref bean="objectB" /> 
    </list> 
    </property> 
</bean> 

如果你想到一個'動態'解決方案,然後採取@ Biju的答案。

相關問題