1

假设我有这个属性文件:

students.bill.firstname=John
students.bill.lastname=Doe
students.bill.age=20
students.jim.firstname=Jim
students.jim.lastname=Wright
students.jim.age=21
.
.
.

我想要一个包含学生地图的 xml bean,其中学生的名字作为键。

对象示例:

学生.java

public class Student {
    String firstname;
    String lastname;
    Integer age;
}

课堂.java

public class Classroom {
    Map<String, Student> students;
}

我正在寻找一种方法,可以说,从属性 students.bill.* 创建一个学生 bean 并将其添加到教室 bean 地图中。然后为students.jim.*制作一个并将其添加到教室bean地图中。我真的不想为每个学生创建一个 bean,然后将每个值都放入其中。

4

1 回答 1

5

自 Spring 0.9 以来,Spring 已经开箱即用地支持这一点(但没有多少人知道这一点)。

您需要稍微修改您的属性文件。

student.(class)=your.package.here.Student
student.(abstract)=true

jim.(parent)=student
jim.firstname=Jim
jim.lastname=Wright
jim.age=21
... Other student based definitions here.

现在您可以将 aBeanFactory与 a 一起使用PropertiesBeanDefinitionReader

DefaultListableBeanFactory bf = new DefaultListableBeanFactory();
PropertiesBeanDefinitionReader reader = new PropertiesBeanDefinitionReader(bf);
reader.loadBeanDefinitions(new ClassPathResource("students.properties"));
Map<String, Student> students = bf.getBeansOfType(Student.class);

现在,如果您有一个新学生,只需将其添加到属性文件并重新加载。

于 2015-06-17T05:53:38.223 回答