【Spring】01:IoC+IoC容器+Bean+DI

121 阅读2分钟

总结:IoC、DI

IoC:一种思想,用对象的时候不要自己new,要外部(IoC容器)提供。

IoC容器中的 bean 有关系时,容器能将有关系的 bean 给绑好。

IoC 容器管理的对象叫 bean。

Spring 是用来降低 耦合度 的。

耦合度,是指某模块(类)与其它模块(类)之间的关联、感知和依赖的程度。

耦合的强度依赖于以下几个因素:

(1)一个模块对另一个模块的调用;

(2)一个模块向另一个模块传递的数据量;

(3)一个模块施加到另一个模块的控制的多少;

(4)模块之间接口的复杂程度。耦合按从强到弱的顺序可分为以下几种类型:内容耦合、公共耦合、外部耦合、控制耦合、标记耦合、数据耦合、消息耦合、时间耦合、非直接耦合。

举一个耦合度较高的例子:

// Service
public class BookServiceImpl implements BookService {
    private BookDao bookDao = new BookDaoImpl();
    
    public void save() {
        bookDao.save();
    }
}

//Dao/Mapper
public class BookDaoImpl implements BookDao {
    public void save() {
        sout("...");
    }
}
// 如果Dao发生改动:
//public class BookDaoImpl implements BookDao {
public class BookDaoImpl2 implements BookDao {
    public void save() {
        sout("...2");
    }
}
//则 Service中:new BookDaoImpl(); => new BookDaoImpl2();
//代码变动意味着得重新编译运行

Spring 干的事情是:

// Service
public class BookServiceImpl implements BookService {
    //private BookDao bookDao = new BookDaoImpl();
    private BookDao bookDao;
    ...
}

对象创建 交给外部 => 引出 IoC

IoC(一种思想),Inversion of Control,控制反转

  • 控制:对象创建的控制权

  • 反转:原本对象的创建是自己 new 出来的(内部),现在交给“外部”

IoC 容器 & Bean

IoC 容器,充当 IoC 思想的“外部”

IoC 容器负责对象的创建、初始化等工作。对象统称为 Bean

ServiceDao 对象之间有关系,需要建立绑定关系 => DI

DI,Dependency Injection,依赖注入

Injection [ɪn'dʒekʃn] n. 注射