对spring依赖注入的一点小总结

来源:互联网 发布:淘宝店铺名可以改几次 编辑:程序博客网 时间:2024/05/02 17:20

题记:近日又拜读了Martin Fowler在04年写的《Inversion of Control Containers and the Dependency Injection pattern》,新添了一些领悟。我喜欢将新学到的知识消化吸收,并存入自己的知识库:复述并记录下来。这样依赖可以判断自己是否真的理解透彻了,因为一知半解必然讲述不清;二可日后温故知新。

现实中的系统一般都是由一些组件和服务构成(简称服务),因此在构建这样一个系统的时候,我们经常要面临如何将这些服务组合起来的问题:比如我们需要将一个web控制器层与一个数据库接口层配合起来使用,这些服务很有可能是由完全不相干的团队开发,而且对彼此领域的所知甚少。因此,我们构建系统时就需要实现高层次的松耦合,我们希望这些服务之间仅仅依赖于接口,而不依赖于接口的具体实现。这就要求,这些接口的实现类在编译期并没有链接到应用程序中,但是在运行时应用程序却能够获取接口实现类的实例化对象来执行预期的操作。也就是说,应用程序将一些对象的创建,定位查找等控制权转交给某个第三方,这就是IOC控制反转的一种表现形式。IOC是绝大部分框架的基本特征,Spring和PicoContainer就是有这种特征的轻量级框架,只要遵照它们的约定,就能使用它们来注入接口的具体实现类。

Spring和PicoContainer的IOC实现方式又称为依赖注入,他们通过Setting注入,构造器注入和接口注入三种依赖注入形式实现bean之间的管理。