我们在程序开发时,作为一个java的发烧友,一定是将面向对象的思想熟记于心。当我们想要吃红烧肉时,我们不再去买肉,买油,买菜,买各种原料,而是new一个厨师出来,然后get一盘红烧肉。与面向过程的C语言来说,着实方便了不少。但时代在进步,技术在发展,我们可以有更加方便的做法。让厨师来做红烧肉,我们还得自己去叫厨师,如果有一天我们想打扫屋子,还得自己去找清洁工,于是我们想,如果能有一个***人,我需要什么服务直接找他该多好。于是有了IoC。Spring是JAVA WEB开发中一个优秀的框架,他主要是提供了IoC的实现——IoC Service Provider。

IoC就是概念上的***人,spring的IoC Service Provider就是站在你面前的***人,可以随时为你服务。他可以为你找来厨师,找来清洁工。但这些厨师,清洁工都需要通过一个称为“依赖注入”的方法教给***人。spring框架已经给你注入好了许多服务,比如厨师,清洁工,但如果你需要一些spring中没有注入的服务,那么也需要走这个过程“依赖注入”。

“依赖注入”有三种方法,一是构造方法注入,二是setter方法注入,三是接口注入。当这个过程一直进行,你的***人就掌握了太多的信息,他管理的这些服务之间也有着千丝万缕的联系,可能A服务也依赖了B,B又依赖了C,这些复杂的关系,都需要***人也就是IoC来管理。管理的方法有三种。一,直接编码方式 二配置文件方式 三元数据方式(对编码方式的封装)。

(因为是感性认识,所以不对三种注入方法,三种依赖管理方法以及他们的优劣进行讨论,读者可自行查询)