Spring系列文章目录
第一章 IOC思想
前言
控制反转IOC(Inversion of Control),是一种思想(理论),依赖注入DI(Dependency Injection)是实现这种思想的一种方式,而Spring就使用了DI的方式来实现IOC。
一、IOC是什么?
在我了解IOC的过程中看到一篇文章写了IOC的由来和作用,文章思路清晰,逻辑严密,看完之后豁然开朗,我想知道的,不知道的全都包含在内,这篇文章再写下去就没什么意思了。所以本文到此为止,有需求请移步下面链接。
文章地址
Tips:给出的链接文章中说“IOC也叫依赖注入(DI)”,这一点我是不认同的
理由如下
- ioc是目的,di是手段。ioc是指让生成类的方式由传统方式(new)反过来,既程序员不调用new,需要类的时候由框架注入(di),是同一件不同层面的解读。
- IoC是一个很大的概念,可以用不同的方式实现。其主要形式有两种:
◇ 依赖查找:Dependency Lookup DL 容器给组件提供回调接口和上下文条件,组件主动调用容器的API来查询依赖对象。EJB和Apache Avalon 都使用这种方式。这样一来,组件就必须使用容器提供的API来查找资源和协作对象,仅有的控制反转只体现在那些回调方法上(也就是上面所说的 类型1):容器将调用这些回调方法,从而让应用代码获得相关资源。
◇ 依赖注入:Dependency Injection DI 组件不做查询操作,组件只提供普通Java方法给容器使用,让容器解析依赖(让容器去决定依赖关系)。容器全权负责的组件的装配,它会把符合依赖关系的对象通过JavaBean属性或者构造函数传递给需要的对象。通过JavaBean属性注射依赖关系的做法称为设值方法注入(Setter Injection);将依赖关系作为构造函数参数传入的做法称为构造子注入(Constructor Injection)