在Spring EL中引用当前bean的属性

时间:2016-05-10 19:02:42

标签: java spring spring-el

我想从单个类创建许多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;
}

1 个答案:

答案 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>