2012-09-10 35 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的答案。

相关问题