1.开发步骤2.构造方法的重载2.1参数个数不同2.2构造参数个数相同时3.注入总结注入通过Spring的配置文件为成员变量赋值Set注入Spring调用Set方法通过配置文件为成员变量赋值构造注入Spring调用构造方法通过配置文件为成员变量赋值1.开发步骤提供有参构造方法public class Customer implements Serializable {private String name;private int age;public Customer(String name, int age) { this.name name; this.age age; } Override public String toString() { return Customer{ name name , age age }; }}通过Spring的配置文件来为成员变量赋值tom 1一个构造参数对应构造方法的一个构造参数而且顺序是对应的2.构造方法的重载我们先来回顾一下什么是方法的重载1.在同一个类中 2.方法名相同 3.形参列表不同(个数类型顺序) 4.方法的重载和返回值类型无关和权限修饰符也无关那么当构造方法发生重载的时候我们想要构造注入为成员变量赋值需要注意什么细节呢2.1参数个数不同public class Customer implements Serializable { private String name; private int age; public Customer(String name) { this.name name; } public Customer(String name, int age) { this.name name; this.age age; } Override public String toString() { return Customer{ name name , age age }; } }如果说我们现在只想为name属性赋值的话那么age就会有默认值bean idcustomer classcom.zyh.basic.Customer constructor-arg valuejack/value /constructor-arg /bean总结 我们可以发现当构造参数个数不同的时候我们可以通过 constructor-arg 标签的数量来进行区分2.2构造参数个数相同时我们再来看看另外一种情况当重载的构造方法中有两个构造方法的参数都只有一个那么Spring怎么知道我们要为哪一个成员变量赋值呢。这个时候我们就应该通过成员变量的类型来进行区分通过标签引入type属性进行类型区分 bean idcustomer classcom.zyh.basic.Customer constructor-arg typeint value3/value /constructor-arg /bean public class Customer implements Serializable { private String name; private int age; public Customer(String name) { this.name name; } public Customer(int age) { this.age age; } public Customer(String name, int age) { this.name name; this.age age; } Override public String toString() { return Customer{ name name , age age }; } }type属性指明要赋值的参数类型bean idcustomer classcom.zyh.basic.Customer constructor-arg typeint value3/value /constructor-arg /bean这个时候我们还会有一种疑惑如果有两个成员变量的类型一样呢哈哈大家想到这里肯定是有经过认真思考的不过大家可能忘记了重载的定义我们说重载指的是参数的个数类型顺序中有一个不同就构成了重载但是注意我们从来都没有说过参数的名字不同构成重载着就是语法报错毕竟我们要记住参数名是可以随便乱取的3.注入总结set注入用得比较多构造注入相对来说毕竟麻烦毕竟有构造方法重载的问题Spring框架中大量应用了set注入