同时有构造注入和set注入,那就是类中同时有有参构造和setXXX()方法。
类定义:
public class Injection { private String name; private Integer age; public Injection(String name, Integer age) { this.name = name; this.age = age; } public Injection(String name) { this.name = name; } public void setName(String name) { this.name = name; } public void setAge(Integer age) { this.age = age; } @Override public String toString() { return "Injection{" + "name='" + name + ''' + ", age=" + age + '}'; } }第一种情况:有参构造注入(全参)+一个set注入
bean.xml
结果:name值为set注入的值,age为有参构造的值
结果:name值为set注入的值,age为null
结果:name值为有参构造注入,age值为set注入
结果:name值为set注入,age值也为set注入。
构造注入优先级比set注入高,所以同时存在时并且对同一个属性注入时,最后的值会是set注入的值,因为构造注入的值会被set注入的值覆盖,不是同时注入同一个属性时,则set注入的属性为set注入的值,其他属性为构造注入的值或null(构造也没注入)。
其实也不难理解,毕竟在java类中,创建一个对象不就是先用构造函数嘛。。。。。。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)