我想从一个类中创建一些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; }
解决方法
您可以使用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>