控制反转IOC(Inversion of Control),是一种设计思想,DI(依赖注入)是实现IOC的一种方法,也有人认为DI只是IOC的另一种说法。没有IOC的程序中我们使用面向对象编程对象的创建与对象间的依赖关系完全硬编码在程序中,对象的创建由程序自己控制,控制反转后将对象的创建转移给第三方,个人认为所谓控制反转就是:获得依赖对象的方式反转了。

Spring

  依赖注入(DI)和控制反转(IOC),目的是为了使类与类之间解耦合,提高系统的可扩展性和可维护性。

一、基本概念理解

1、参与者都有谁?

1)对象

2)IOC/DI容器

3)某个对象的外部资源

2、依赖,谁依赖谁?为什么需要依赖?

依赖嘛,很好理解的,对象依赖于IOC/DI容器,至于为什么要依赖呢?对象需要IOC/DI容器来提供对象需要的外部资源。

3、注入,谁注入谁?又注入了什么呢?

显而易见是IOC/DI容器注入对象,注入了what呢?肯定注入的是某个需要的东西那就是注入对象所需要的资源,肯定不会注入无关紧要的内容,你说呢?

4、控制反转,谁控制谁?控制什么?为什么叫反转呢?存在正转吗?

控制反转,控制什么?肯定是IOC/DI容器控制对象,主要是控制对象实例的创建,反转是相对于正向而言的,那么什么算是正向的呢?考虑一下常规情况下的应用程序,如果要在A里面使用C,你会怎么做呢?当然是直接去创建C的对象,也就是说,是在A类中主动去获取所需要的外部资源C,这种情况被称为正向的。那么什么是反向呢?就是A类不再主动去获取C,而是被动等待,等待IoC/DI的容器获取一个C的实例,然后反向的注入到A类中。

5、控制反转和依赖注入式同一个概念吗?

依赖注入和控制反转是对同一件事情的不同描述,从某个方面讲,就是它们描述的角度不同。依赖注入是从应用程序的角度在描述,可以把依赖注入描述完整点:应用程序依赖容器创建并注入它所需要的外部资源;而控制反转是从容器的角度在描述,描述完整点:容器控制应用程序,由容器反向的向应用程序注入应用程序所需要的外部资源。

二、依赖注入方式

2.1 接口注入

2.2 setter方法注入

2.3 构造方法注入

2.4 注解方法注入

本文标题: Spring系列-框架核心IOC-开发篇

本文作者: 狂欢马克思

发布时间: 2020年06月03日 00:00

最后更新: 2021年04月15日 16:08

原始链接: https://www.hosiang.cn/43aa0d57/

版权声明: 本文著作权归作者所有,均采用CC BY-NC-SA 4.0许可协议,转载请注明出处!

× 喜欢就赞赏一下呗!
打赏二维码