Spring 入门学习 —— IOC 的基本概念(四)(IOC 依赖对象注入方式)

140 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第21天,点击查看活动详情

上一篇文章我们介绍的是通过setter 方法进行依赖注入。这篇文章我们介绍最后一种依赖注入的方式:通过接口进行依赖注入。

通过接口进行依赖注入

对于前两种依赖注入的方式其实在我们看来,即使是新手,也是一目了然。但是通过接口进行依赖注入就没有那么简单明了了。

通过接口进行依赖注入,如果被注入的对象想要通过IOC 容器为其注入其所依赖的对象,那么就必须要实现某个接口才行。这个接口存在的意义就是通过提供一个方法,来为实现了这个接口的类的对象进行依赖注入

举例来说:

interface TestInterface {
    void injectMethod(Dep1 dep1);
}

class Test implements TestInterface {
    private Dep1 dep1;
    @Override
    public void injectMethod(Dep1 dep1) {
        this.dep1 = dep1;
    }
    
    // 其他逻辑
}

其实我们可以发现,TestInterface 接口中的方法的参数,就是实现了这个接口对应的类的对象所需要依赖的对象的类型。这样,IOC Service Provider 就可以通过这个接口的方法,将依赖对象注入到需要被注入的对象中去。

其实如果使用这种注入方式,我们可以发现,某个类实现的接口和接口中的方法名称都是不重要的,重要的是方法中的参数类型,这个参数类型必须是“被注入对象”所依赖的对象的相同类型才可以。

总结

至此三种依赖注入方式就已经讲解完了。相比于通过构造方法进行依赖注入和通过setter 方法进行依赖注入,使用接口进行依赖注入的方式就比较繁琐了。即:如果需要注入依赖对象,那么就必须实现其他的接口。

其实这种方式使用的很少,这里仅仅是为了介绍而介绍,也就是说,通过这种方式,也可以达到“依赖注入”的目的。