Spring框架学习之依赖注入(DI)

Spring 中有两种依赖注入的方法,一种是setter注入,一种是构造器注入,多是使用setter注入。
依赖注入:
每个bean中多多少少都有一些私有变量,这是与bean一起工作的其他对象,这些对象与bean之间的关系是依赖关系,什么依赖关系,就是bean没了就这些对象也就没了。然而,
每个bean中的私有变量的实例化不是由bean来控制的,而且通过Spring容器来控制的,在bean创建的时候,由容器注入这些依赖关系,控制从根本上发生了反转,这也叫做控制反转(IOC)。
构造器注入:
每个构造器参数代表一个依赖,每个依赖可以是另一个bean或者是一个值。
假如A和B都是一个bean,现在用构造器给A注入B

package x.y;

public class A {

    private B b;
    private int i;
    private String j;

    public A(B b, int i, String j) {
        this.b = b;
        this.i = i;
        this.j = j;
    }
}











可以看到第一个依赖是一个bean,第二和第三都是一个值,只是简单类型不一样,Spring的true所以spring无法识别该值的类型。这时可以借助索引或者type类型来解决简单类型的混淆问题,index必须从0开始。如果有两个构造器参数都是bean,就不会有这种混淆的情况

public A(B b, C c) {
this.b=b;
this.c=c;

}


     


     
 

如果使用setter注入就不会出现这种情况
setter注入:

package x.y;

public class A {

    private B b;
    private C c;
    private String j;

    public A(B b, C c, String j) {
        this.b = b;
        this.c = c;
        this.j = j;
    }
}











你可能感兴趣的:(Spring框架学习之依赖注入(DI))