IOC翻译成中文是"控制反转",不是具体技术,而是实现对象解耦的思想。
控制反转的意思是将依赖对象生命周期控制权进行反转,全称应该是控制权反转。
之前需要一个对象,常用的方法就是在当前对象中new一个对象,那这样有个比较大的问题在于,耦合,一旦new的那个对象构造方法变动,那么所有使用到的地方都需要改动。因此我们可以将需要的对方注入到spring的IOC容器中,需要使用的地方只需要注入该对象即可。常见的就是@service交给spring容器管理,在使用的模块利用@Resource/@Autowired注入进行使用。这样做的目的就是进行解耦,控制权的变动.以前需要对象,那需要使用模块造一个对象,而现在不需要,只要管IOC容器中拿对象即可,至于这个对象怎么生成的,使用模块并不关心。
IOC最大的特点就是:① 解耦和松散耦合;② 生命周期管理;
说到IOC的时候,我们常常会提到DI,这两者有什么区别呢?
DI翻译成中文是"依赖注入",依赖注入不是设计思想,而是具体的一种实现,它是IOC容器运行期间,动态的将某个依赖对象注入到当前对象的技术叫做DI。
比如A对象需要B对象,那么在A运行时,动态的将对象B注入到当前类中,而非通过直接new的方式或者B对象的方式,就是依赖注入
IOC和DI定义不同,但做的事情一样的,都是用来对象解耦的,两者区别在于:IOC是一种设计思想,DI是一种具体的实现技术。
比如:今天周五,想去吃顿好吃的,那么“吃顿好的”就是一种思想,为IOC。
那具体吃什么呢,盖浇饭、炒面、蒸菜?这种具体的就是DI。
因为是一种具体的实现,除了DI之外,还可以有别的方式,比如DS(依赖查找),在spring框架中,依赖查找通过ApplicationContext接口的getBean()方法来实现。
标签:依赖,DI,对象,spring,IOC,注入 From: https://www.cnblogs.com/qwg-/p/18085653