我想从单个类创建许多bean,所有bean都要在当前应用程序上下文中实例化,每个bean都基于属性文件中的前缀属性。我给出了一个我想要实现的例子。如果没有过多的代码(例如没有多个类,复杂的工厂等),如何做到这一点的任何提示将不胜感激。
XML配置:
<bean id="bean1" class="Mybean">
<property name="prefix" value="bean1"/>
</bean>
<bean id="bean2" class="Mybean">
<property name="prefix" value="bean2"/>
</bean>
<bean id="bean3" class="Mybean">
<property name="prefix" value="bean3"/>
</bean>
属性文件:
bean1.name=alfred
bean2.name=bobby
bean3.name=charlie
类别:
class Mybean {
@Value("${#{prefix}.name}")
String name;
}
主类:
public class Main {
@Autowired
List<MyBean> mybeans;
}
答案 0 :(得分:2)
您可以使用PropertyPlaceholderConfigurer
直接设置bean的名称(而不是存储其前缀):
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="app.properties"/>
</bean>
<bean id="bean1" class="Mybean">
<property name="name" value="${bean1.name}"/>
</bean>
<bean id="bean2" class="Mybean">
<property name="name" value="${bean2.name}"/>
</bean>
<bean id="bean3" class="Mybean">
<property name="name" value="${bean3.name}"/>
</bean>