微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

依赖注入/控制反转学习笔记

最近在学习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依赖注入:说的是创建对象实例时,为这个对象注入属性值或其它对象实例,侧重于实现。


Martin的文章也有被翻译成中文版


国内某位大牛在Martin的文章之上写的解读


其他一些文章(目前正在看,但还没看懂)

Spring框架中IOC控制反转和DI依赖注入区别

控制反转与依赖注入

Object Builder Application Block(中文)


目前大概有三种依赖注入的方式:

类型1 (基于接口): 可服务的对象需要实现一个专门的接口,该接口提供了一个对象,可以从用这个对象查找依赖(其它服务)。早期的容器Excalibur使用这种模式。

类型2 (基于setter): 通过JavaBean的属性(setter方法)为可服务对象指定服务。HiveMind和Spring采用这种方式。

类型3 (基于构造函数): 通过构造函数的参数为可服务对象指定服务。picocontainer只使用这种方式。HiveMind和Spring也使用这种方式。

原文地址:https://www.jb51.cc/javaschema/285825.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐