创建具有不同属性的相同 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.
现在您可以使用 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);
现在,如果您有新学生,只需将其添加到属性文件并重新加载。
假设我有这个属性文件:
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.
现在您可以使用 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);
现在,如果您有新学生,只需将其添加到属性文件并重新加载。