最简洁的方法来创建具有不同属性的同一个类的多个bean

时间:2015-06-17 00:58:28

标签: java spring dependency-injection spring-bean spring-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,其中包含以firstname为键的学生地图。

对象示例:

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地图中。我真的不想为每个学生创建一个bean,然后通过并将每个值放入其中。

1 个答案:

答案 0 :(得分:5)

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);

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