最近在学习js的开发框架比如AngularJS、Meteor、Backbone等,这些框架的一个特点就是依赖注入,因为一直对这个概念云山雾罩,所以特意花时间学习了一下,把学习笔记写在这里。
------------------------------------------------------------------------
控制反转(IoC:Inversion of Control)
依赖注入(DI:Dependency Injection)
控制反转是Java一些开发框架的核心(以Spring为代表),随着对这种模式的讨论越来越热烈,一位大牛Martin Fowler写出了一篇深具影响力的文章《Inversion of Control Containers and the Dependency Injection pattern》不光深入探讨了控制反转这个模式还提出一个更贴切的称呼---依赖注入,控制反转和依赖注入其实是等价的,只不过强调的方面不同。
IOC控制反转:说的是创建对象实例的控制权从代码控制剥离到IOC容器控制,实际就是你在xml文件控制,侧重于原理。
DI依赖注入:说的是创建对象实例时,为这个对象注入属性值或其它对象实例,侧重于实现。
其他一些文章(目前正在看,但还没看懂)
Object Builder Application Block(中文)
目前大概有三种依赖注入的方式:
类型1 (基于接口): 可服务的对象需要实现一个专门的接口,该接口提供了一个对象,可以从用这个对象查找依赖(其它服务)。早期的容器Excalibur使用这种模式。
类型2 (基于setter): 通过JavaBean的属性(setter方法)为可服务对象指定服务。HiveMind和Spring采用这种方式。
类型3 (基于构造函数): 通过构造函数的参数为可服务对象指定服务。PicoContainer只使用这种方式。HiveMind和Spring也使用这种方式。
原文链接:https://www.f2er.com/javaschema/285825.html