1.常见的 setXX注入,此种方式要求提供对应属性的set方法,name对应的是set之后的值,并不是属性名称
![](https://img.haomeiwen.com/i4252552/38226bbf531d3d30.png)
2.构造注入:如果只有一个有参数的构造方法并且参数类型与注入的bean的类型匹配,那就会注入到该构造方法中。
![](https://img.haomeiwen.com/i4252552/480eba14e7bc8b1f.png)
![](https://img.haomeiwen.com/i4252552/3b1e7c32c8870b0e.png)
此种方法要求提供构造方法,以上为单个构造参数,
如果有多个构造参数,例如:
![](https://img.haomeiwen.com/i4252552/46a7909549cecbc1.png)
![](https://img.haomeiwen.com/i4252552/11ef757f01813d6d.png)
以上情况3个参数,配置规则如下
1.构造方法必须有此参数才可以配置,否则报错
2.当没有设置constructor-arg 的 name属性时如果类型一样,那么构造时调用的构造方法与构造方法顺序无关,此时如果想根据需求指定顺序,那么方法有两种看 3.4.
3.关于2的问题解决方法一 可以设置constructor-arg 的 name 属性直接指定属性名称,优点方法查看,缺点构造方法必须有此属性的名称(实际也算不上缺点,毕竟这样看比较直观方便
![](https://img.haomeiwen.com/i4252552/bc763ea8e40b04cd.png)
4.关于2的问题解决方法二 设置index ,从0开始代表的是构造方法的第几个参数,此方法不是很推荐,毕竟不是很明了如果有多个构造那么需要挨个构造对照才能找到对应属性
![](https://img.haomeiwen.com/i4252552/7956c31e84af9be0.png)
5.解决方法3 设置type属性,如果 s1为int 类型 s2为String类型,分别在两个构造函数里那么会根据type自动选择对应的构造函数
![](https://img.haomeiwen.com/i4252552/87e045c64faf7c17.png)
构造方法优缺点比较
![](https://img.haomeiwen.com/i4252552/b24a2264214b50ce.png)
3.注解注入
网友评论