IOC容器

论坛 期权论坛 脚本     
匿名网站用户   2020-12-21 07:58   11   0

ioC是Spring容器的内核,AOP、声明式事物等功能都依赖于此功能,它涉及代码解耦、设计模式、代码优化等问题的考量,我们将通过以下几方面来深入理解ioC:
1、ioC的初步理解;
2、ioC的注入类型;
3、ioC的注入方式;

ioC的注入类型:
1、构造函数注入:通过调用类的构造函数,将接口实现类通过构造函数变量传入。

public class Wujiandao{
    private Liujianming lim;
    //注入liujianming的具体扮演者
    public Wujiandao(Liujianming lim){
        this.lim=lim;
    }
    public void tianTai(){
        lim.declare("我想做一个好人");
    }
}

public class Director{
    public void direct(){
        //指定角色的扮演者
        Liujianming lim=new Liudehua();
        //注入具体扮演者到剧本中
        Wujiandao wjd=new Wujiandao(lim);
        wjd.tianTai();
    }
}

2、属性注入(推荐):通过Setter方法完成调用类所需依赖的注入,更加灵活方便,不像构造函数注入必须一开始就执行。

public class Wujiandao{
    private Liujianming lim;
    public void setLim(Liujianming lim){
        this.lim=lim;
    }
    public void tianTai(){
        lim.declare("我想做一个好人");
    }
}

public class Director{
    public void direct(){
        Liujianming lim=new Liudehua();
        Wujiandao wjd=new Wujiandao();
        //调用属性Setter方法注入
        wjd.setLim(lim);
        wjd.tianTai();
    }
}

3、接口注入:将调用类所有依赖注入的方法抽取到一个接口中,调用类通过实现该接口提供相应的注入方法。

public interface ActorArrangable{
    void injectLim(Liujianming lim);
}

public class Wujiandao implements ActorArrangable{
    private Liujianming lim;
    //1、实现接口方法
    public void injectLim(Liujianming lim){
        this.lim=lim;
    }
    public void tianTai(){
        lim.declare("我想做一个好人");
    }
}

public class Director{
    public void director(){
        Liujianming lim = new Liudehua();
        Wujiandao wjd = new Wujiandao();
        wjd.injectLim(lim);
        wjd.tianTai();
    }
}

spring作为一个容器,通过配置文件或者注解描述类和类之间的依赖关系,自动完成类的初始化和依赖注入的工作,下面是对以上实例进行配置的配置文件片段:
//1、实现类实例化

//2、通过lim-ref建立依赖关系

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:1136255
帖子:227251
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP