基于Spring中的属性文件动态配置java beans

问题描述:

想知道是否有一种方法可以使用PropertyPlaceholderConfigurer类根据属性文件中的一组值来动态实例化bean。基于Spring中的属性文件动态配置java beans

我有一个Java bean说学生有两个属性:“name”和“主题”

我有一个属性文件:

student.1.name=student1name 
student.1.subject=student1subject 
student.2.name=student2name 
student.2.name=student2subject 

现在我有一个教室对象,可以采取学生名单。

我想知道是否有一种方法,我们可以使用Spring做到这一点。这里面临的挑战是学生人数可能会有所不同。

如果只有一个学生对象,然后:

<bean id="student" class="com.abc.Student"> 
    <property name="name" value="${student.1.name}" /> 
    <property name="subject" 
     value="${student.1.subject}" /> 
</bean> 

<bean id="classRoom" class="com.abc.ClassRoom"> 
    <property name="student" ref="student" /> 
</bean> 

会工作。但是在这种情况下,我们有一份n个学生的名单。而n的值可能会因属性文件中的条目数而异。

我与凯文 - 国际海事组织你走错了方式。

一个可能的解决方法是创建一个bean,是以属性文件作为参数,读取它,并公开学生名单(这将需要对东西被编入索引,如ñ在现有的属性文件)。

教室bean可以使用该列表的学生。

但它肯定看起来像你试图以一种尴尬的方式重复数据库的功能,没有数据库。

+0

感谢您的输入凯文和戴夫。我已经实现了以属性文件作为参数并实例化对象。可以像Kevin所说的那样使用XML,但认为这可能是一种矫枉过正。非常感谢!! – ignatan

我不认为有一种方法可以通过PropertyPlaceholderConfigurer来实现。通常,当我遇到这种情况时,我选择JSON或XML的配置格式,并使用GSON/Jackson/JAXB将数据解组到对象中。