spring之IOC控制反转

60 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 17 天,点击查看活动详情

前言

一开始认为ioc只是spring之中的一个重要知识点,刚刚开始学习的时候也没有太过注重。现在回过头来复习,发现ioc(nversion of Control:控制反转)的作用之大。不仅仅在于其只是一个spring的知识点,而且的的确确是在应用于实际开发当中的。

什么是ioc

首先我们知道这个字母是代表着控制反转的意思。但我相信有许多人只是知道这个字母的表面意思,即我们将对象交给spring(也可以是其他容器)管理。当我们需要的时候从容器之中拿就好了,同时这个操作也降低了程序的耦合度。但是为什么会降低耦合度呢?今天我就来讲讲我们的理解。

为什么需要ioc

说到为什么需要ioc,我们可以先看下面这一段代码。我在主类中正常定义了一个Checker类,然后我采取new的方式实例化,这很正常对吧。

public class TextEditor {

    private Checker checker;

    public TextEditor() {
        this.checker = new Checker();
    }
}

然后我们再看下面这段代码。与上面的代码类似都是效果。或许大家以为没什么差别,但是我一旦修改我们要实例化的Checker类,比如说因为业务需求要在实例化参数时,多传入一个参数。这时上面那段代码就需要大量的修改,因为其是相当于写死了的,不单单类名还有参数这些。而下面这段代码只需要调用者进行一些简单的修改即可。很很

public class TextEditor {

    private IocChecker checker;

    public TextEditor(IocChecker checker) {
        this.checker = checker;
    }
}

总结

就像很多人对ioc的解释一样,ioc只关心你要什么,不关心要的东西是怎么完成的。知乎上有个比喻很贴切,ioc就是淘宝,只是个中介的作用。