美文网首页
依赖注入和容器

依赖注入和容器

作者: Albert_Sun | 来源:发表于2018-07-22 18:02 被阅读14次

Spring提倡面向接口编程,来降低模块耦合度,使代码易维护、重构和测试。其核心技术是依赖注入和面向切面编程,然后基于这两种核心技术实现了许多强大的功能。这里对依赖注入做一个理论上的梳理。

1、基本原则--依赖倒置原则(Dependence Inversion Principle, DIP)
DIP是一种软件设计的指导思想。传统软件设计中,上层代码依赖于下层代码,当下层出现变动时, 上层代码也要相应变化,维护成本较高。而DIP的核心思想是上层定义接口,下层实现这个接口, 从而使得下层依赖于上层,降低耦合度,提高整个系统的弹性。这种面向接口编程的思想,经实践证明是有效的策略。DIP只是一种理念、思想,而IoC是一种实现DIP的方法。

2、控制反转(Inversion of Control, IoC)
上层模块只定义了接口,下层模块只负责实现接口,上层模块不知道是哪个类实现了这个接口,甚至上层模块中不应该知道是哪个类实现了接口,因为当代码重构或修改后,类名发生了变化,仍旧需要修改上层代码。所以在上层模块中不应该负责对其依赖的实例化,这个实例化的过程就需要交给第三方来实现,也就是说不再负责其依赖的创建和生命周期,将其依赖对象的控制权交给第三方。 IoC的核心是将类(上层)所依赖的单元(下层)的实例化过程交由第三方来实现。 一个简单的特征就是类中不对所依赖的单元有诸如 new Class() 的实例化语句。

3、控制反转容器(IoC Container)
当项目比较大时,依赖关系可能会很复杂。 而IoC Container(即外部的第三方)提供了动态地创建、注入依赖单元,映射依赖关系等功能,减少了许多代码量。许多成熟的框架都实现了Container 来处理这些工作。

4、依赖注入(Dependence Injection, DI)
DI是IoC的一种设计模式,是一种套路,按照DI的套路,就可以实现IoC,就能符合DIP原则。 DI的核心是把类所依赖的单元的实例化过程,由第三方实现,而在上层模块创建时,第三方会自动将其依赖的单元实例化并通过某种方式注入到类的内部来。上层模块根本不知道注入的到底是哪个实体类,也不关心注入的过程,极大地降低了上层模块和其依赖的耦合度。

5、服务定位器(Service Locator)
Service Locator是IoC的另一种实现方式, 其核心是把所有可能用到的依赖单元交由Service Locator进行实例化和创建、配置, 把类对依赖单元的依赖,转换成类对Service Locator的依赖。 DI 与 Service Locator并不冲突,两者可以结合使用。 目前,Yii2.0把这DI和Service Locator这两个东西结合起来使用,或者说通过DI容器,实现了Service Locator。而Spring把DI使用到了极致。

相关文章

  • 依赖注入和依赖注入容器

    依赖注入是一种常见的设计模式,在合适的时候使用它,可以提高我们代码的质量。依赖注入是控制反转的一种实现,那么什么是...

  • 依赖查找和依赖注入

    依赖查找和依赖注入的区别 依赖查找:容器中的对象通过Api来查找自己所依赖的资源和对象 依赖注入:依赖对象和注入对...

  • 依赖注入和容器

    Spring提倡面向接口编程,来降低模块耦合度,使代码易维护、重构和测试。其核心技术是依赖注入和面向切面编程,然后...

  • spring的ioc和aop的原理

    IOC:依赖注入(控制反转),两种注入方式:依赖注入和设置注入,通过容器动态地将某种依赖注入到组件中,通过Spri...

  • 面试官:你给我讲一下什么是spring依赖注入?网友:就这啊,太

    什么是依赖注入 依赖 : 指Bean对象的创建依赖于容器 . 注入 : 指Bean对象所依赖的资源 , 由容器来设...

  • spring 学习

    依赖注入(DI)和控制翻转(IOC) 依赖注入在书上说的是容器负责创建对象和维护对象间的依赖关系,而不是通过对象...

  • 一、Spring核心机制:依赖注入

    设值注入:IOC容器使用变量的setter方法来注入被依赖的对象。 构造注入:IOC容器使用构造器来注入被依赖的对...

  • 关于依赖注入(typescript)

    一、概念:依赖注入(DI)、控制反转(IOC)、IOC容器 依赖注入(DI)和控制反转(IOC)基本是一个意思,因...

  • Spring的IOC原理及实现 (四)

    四、IOC容器的依赖注入 1、依赖注入发生的时间 当SpringIoC容器完成了Bean定义资源的定位、载入和解析...

  • 1.依赖注入

    依赖注入指的是容器负责创建对象和维护对象之间的依赖关系,而不是通过对象本身负责自己的创建和解决自己的依赖 依赖注入...

网友评论

      本文标题:依赖注入和容器

      本文链接:https://www.haomeiwen.com/subject/ksxrmftx.html