Spring 依赖注入

来源:互联网 发布:软件研发立项报告模板 编辑:程序博客网 时间:2024/04/30 15:10

       因为某些历史原因,依赖注入还有一种称呼:控制反转(Inversion of Control)。 不管是依赖注入,还是控制反转,其含义完全相同。当某个Java 实例(调用者)需 要另一个Java 实例(被调用者)时,在传统的程序设计过程中,通常由调用者来创建被 调用者的实例。而在依赖注入的模式下,创建被调用者的工作不再由调用者来完成,通 常由Spring 容器来完成,然后注入调用者,因此称为控制反转,也称为依赖注入。
不管是依赖注入,还是控制反转,都说明Spring 采用动态及灵活的方式来管理各种 对象,使对象与对象之间的具体实现互相透明。 为了更好地理解依赖注入,笔者建议参考人类社会的发展,看如下问题在各种社会 形态里如何解决:一个人(Java 实例,调用者)需要一把斧子(Java 实例,被调用者)。 在"原始社会"里,几乎没有社会分工。需要斧子的人(调用者)只能自己去磨一 把斧子(被调用者)。对应的情形为:Java 程序里的调用者自己创建被调用者。进入"工业社会"后,随着工厂的出现,斧子不再由普通人完成,而在工厂里被生 产出来。此时需要斧子的人(调用者)只需找到工厂,购买斧子,无须关心斧子的制造 过程。对应简单工厂设计模式:调用者只需要定位工厂,无须管理被调用者具体的实现。进入"共产主义"社会后,需要斧子的人甚至无须定位工厂,"坐等"社会提供即可。 调用者无须关心被调用者的实现,无须理会工厂,等待Spring 依赖注入即可。 在第一种情况下,由Java 实例的调用者创建被调用的Java 实例,调用者直接使用 new 关键宇创建被调用者实例,其程序高度藕合,效率低下。在实际应用中极少使用这 种方式。 在第二种情况下,调用者无须关心被调用者的具体实现过程,只需要找到符合某种 标准(接口)的实例即可使用。此时调用的代码面向接口编程,可以让调用者和被调用 者解楠,这也是工厂模式被大量使用的原因。但调用者需要自己定位工厂,使调用者与 工厂糯合在一起。第三种情况,是最理想的情况,程序完全无须理会被调用者的实现,也无须定位工 厂,是最好的解糯方式。实例之间的依赖关系由容器提供。 所谓依赖注入,是指在程序运行过程中,如果需要调用另一个对象协助时,无须在 代码中创建被调用者,而是依赖于外部的注入。Spring 的依赖注入对调用者和被调用者 几乎没有任何要求,完全支持对POJO 之间依赖关系的管理。
依赖注入通常有两种:
·设值注入
·构造注入

觉得MoneyPlus博客上的这篇文章对依赖注入的解释比较生动,不过相对于对依赖注入不太熟悉的人来说,不一定能明白。所以我转载了它

转载自:http://8738168.blog.163.com/blog/static/28101879200912210322285/

以下是我自己添加的理解。

依赖注入有三种方法:Setter注入(也就是上面说的设值注入,这是主要使用的方法),构造器注入,接口注入(不常用)。

原创粉丝点击