您的位置:首页 > 编程语言 > Java开发

(Spring的核心机制)理解依赖注入

2018-03-23 20:09 302 查看
当某个java实例(调用者)需要另一个java实例(被调用者)时,传统的程序中,通常由调用者先创建被调用者,再创建被调用者的实例,就好比如一个普通人使用电脑,还需要需创造出一台电脑,再使用.这是显示调用. 在依赖注入(其实是通过配置文件的形式处理好协作关系,隐式调用)的模式下,创建被调用者的工作不再由调用者来完成,称控制反转;创建被调用者的工作通常由Spring容器来完成,然后注入调用者,因此也称为依赖注入.不管是依赖注入,还是控制反转,都说明Spring采用动态,灵活的方式来管理各种对象.对象与对象之间的具体实现互相透明. 第一种调用java实例的方法:创建和使用是同一个 传统的方法有如下坏处:可扩展性差,由于"人"组件与"电脑"组件的实现类高度耦合(相当于关系密切),如果电脑想扩展某些功能时,人组件的代码也要随之改变.各组件职责不清:一个普通人想使用电脑,他还要去创造电脑出来.但在实际生活中,制造电脑的人跟我们使用电脑的通常只有交易的联系.电脑的更新换代由厂商负责.第二种:实现接口 调用者无须关心被调用者的具体实现过程,只需要找到符合某种标准的实例,即可使用.此时调用的代码面向接口编程,可以让调用者和被调用者解耦,这也就是工厂模式,但是调用者依然需要主动定位工厂,调用者与工厂耦合在一起.相当于一个人想买电脑,厂商负责生产了,但是这个人需要跑到厂商具体生产位置购买电脑,显然,这种方式是不合理的.第三种:最理想的就是程序无须理会被调用者的实现,也无须主动定位工厂,实例之间的依赖关系由IOC容器负责管理.相当于买电脑的不需要千里迢迢找工厂位置才能购买电脑了,无须知道生产电脑的地方在哪里,会有人主动拿回来,在你需要的时候,直接提供. 所谓依赖注入:是指程序运行过程中,如果需要另一个对象协作(调用它的方法,访问它的属性)时,无须在代码中创建被调用者,而是依赖于外部容器的注入.(就像不同电脑品牌的推销员会主动像你推销电脑).Spring 的依赖注入对调用者和被调用几乎没有任何要求,完全支持POJP之间依赖关系的管理.依赖注入通常有如下两种(推销员向你推销的方式):设置注入:IOC容器使用属性的setter方法来注入被依赖的实例构造注入:IOC容器使用构造器来注入被依赖的实例IOC容器:Inversion of Control (控制反转),传统使用java对象,控制程序需要主动去依赖对象,创建对象.但IoC是有专门一个容器来创建这些对象,即由Ioc容器来控制对象的创建.就好比如很久以前,电脑的产生是由使用的人决定的,使用的人需要主动去制造一台电脑,现在不同了,由厂商决定要不要制造,完全不由使用的人控制.Spring IOC容器的3各基本要点:1.应用程序的各组件面向接口编程.面向接口编程可以将各组件之间的耦合提升到接口层次.从而有利项目后期的扩展2.应用程序的各组件不再由程序主动产生,而是由Spring容器来负责产生,并初始化,3.Spring 采用配置文件,或Anntation来管理Bean的实现类,依赖关系,Spring容器则根据配置文件,利用反射来创建实例,并为之注入依赖关系.1.设值注入 是指IOC容器使用属性的setter方法来注入被依赖的实例.这种注入方式简单,直观,因而在Spring的依赖注入里大量使用.(通过setter方法为目标Bean注入依赖关系)2.构造注入在构造实例时,已经为其完成了依赖关系的初始化.这种利用构造器来设置依赖关系的方式,被称为构造注入.
查看https://blog.csdn.net/LPLIFE/article/details/79672106了解这两种注入的区别
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: