繁体   English   中英

在Spring中使用PropertyPlaceholderConfigurer创建具有不同值的多个类实例

[英]creating multiple instances of class with diffrent values using PropertyPlaceholderConfigurer in Spring

我可以从多个属性文件中创建具有多个属性的类的multipe实例吗?

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

现在我想为abc和pqr的不同值创建数量的bean

一个abc和pqr值的xyz实例,另一个abc和pqr值的xyz实例

我可以使用PropertyPlaceholderConfigurer吗?

属性文件通常不包含重复的键。 因此,我假设您对于每个不同的'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>实例变量的“容器” bean。 这将保存您所有的MyObject实例:

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

如果您想到了“动态”解决方案,请采用@Biju的答案。

我想不出任何东西-我能想到的唯一方法是使用自定义BeanFactoryPostProcessor BeanFactoryPostProcessors允许您在加载应用程序上下文时添加更多Bean定义,因此您可以编写一个自定义代码,该代码根据属性文件注册更多Bean定义,它们将在运行时显示为Bean。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM