创建具有不同属性的相同 class 的多个 bean 的最干净方法

cleanest way to create multiple beans of the same class with different properties

假设我有这个属性文件:

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,它包含以名字为键的学生地图。

对象示例:

Student.java

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

Classroom.java

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

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

Spring 已经支持开箱即用,因为 Spring 0.9(但知道的人并不多)。

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

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.

现在您可以使用 BeanFactoryPropertiesBeanDefinitionReader

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

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