![](/img/trans.png)
[英]Creating multiple instances of PropertyPlaceHolderConfigurer - Spring
[英]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.