============================== Spring IoC依赖注入之构造器注入 ============================== 所谓构造器注入就是利用被Spring管理的对象的构造器完成对其属性的赋值。 1 简单类型、字符串和类类型的属性注入 为Student类添加两个构造器: - 无参构造器,兼容Set方法注入 - 针对所有非集合类型属性的构造器 public class Student { ... public Student() { } public Student(String number, String name, String gender, int age, Date enrollment, Subject subject) { this.number = number; this.name = name; this.gender = gender; this.age = age; this.enrollment = enrollment; this.subject = subject; } ... } 配置对象: - 类类型属性注入,或通过ref引用有名对象,或通过bean子标签定义匿名对象 - 书写顺序必须和构造器参数表的顺序严格一致,或通过index指定参数的位置 测试: public class SpringTest { public static void main(String[] args) { ... // 构造器注入 Student sd = context.getBean("sd", Student.class); System.out.println(sd); ... } } 例程:SpringIoC 2 集合类型的属性注入 为Student类再增加一个构造器,针对包括集合类型属性在内的所有属性。 public class Student { ... public Student(String number, String name, String gender, int age, Date enrollment, Subject subject, List hobbies, List courses, Map planA, Map planB, Map planC, Properties planD) { this.number = number; this.name = name; this.gender = gender; this.age = age; this.enrollment = enrollment; this.subject = subject; this.hobbies = hobbies; this.courses = courses; this.planA = planA; this.planB = planB; this.planC = planC; this.planD = planD; } ... } 配置对象: 旅游 电影 足球 Java语言 Java Web SSM Java语言 Java Web SSM 针对集合类型属性的构造器注入,在形式上与Set方法注入类似。 测试: public class SpringTest { public static void main(String[] args) { ... // 构造器注入 Student se = context.getBean("se", Student.class); System.out.println(se); ... } } 例程:SpringIoC