说我有这个属性文件:
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,然后通过并将每个值放入其中。
答案 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.
现在,您可以将BeanFactory
与PropertiesBeanDefinitionReader
DefaultListableBeanFactory bf = new DefaultListableBeanFactory();
PropertiesBeanDefinitionReader reader = new PropertiesBeanDefinitionReader(bf);
reader.loadBeanDefinitions(new ClassPathResource("students.properties"));
Map<String, Student> students = bf.getBeansOfType(Student.class);
现在,如果你有一个新学生,只需将其添加到属性文件并重新加载。