理解依赖注入

    Spring不只能够建立实列,并且能够为实列设置属性值,这种由Spring容器设置属性的方式被称为控制反转。使用依赖注入,不只能够为Bean注入普通属性,还能够注入其余Bean的引用。经过这种依赖注入,Java EE应用中的各类组件不须要以硬编码方式耦合在一块儿,甚至无须使用工厂模式。设计模式

    无论是依赖注入仍是控制反转,其含义彻底相同:当某个Java实列须要另外一个Java实列时,一般由调用者来建立被调用者的实列。在依赖注入的模式下,建立被调用者的工做再也不由调用者来完成,所以被称为控制反转。建立被调用者的实列交由Spring来完成,而后注入调用者,所以也被称为依赖注入。编码

    举个列子理解依赖注入:一我的(JAVA实列,调用者)须要一把斧子(JAVA实列,被调用者)设计

    在原始社会中,须要斧子的人(调用者)只能本身去打造一把斧子(被调用者)。对应的情形就是:Java程序里的调用者本身建立被调用者,一般采用new关键字构造一个被调用者实列,此时须要还要关注被调用者的产生。在这种模式下,可扩展性差。人与斧子组件高度耦合,当程序扩展斧子组件时,人的组件也须要改变。各组件职责不清,对于人而言,只需调用斧子便可,无须关心斧子的建立过程。接口

    在工业社会中,工厂出现了,斧子再也不须要人们完成,而是直接在工厂中产生。此时须要斧子的人(调用者)找到工厂,购买斧子,无须关心斧子的制造过程。对于简单工厂设计模式,调用者只需定位工厂,无须管理被调用者具体的实现。在这种模式下,调用者无须关心被调用者的具体实现过程,只须要找到符合接口的实列,既可使用。可让调用者与被调用者解耦合,可是调用者仍然须要主动定位工厂,调用者与工厂耦合在一块儿。容器

    在共产社会中,须要斧子的人甚至无须关注工厂,Spring容器已经提供好一切,等待Spring注入。这就是依赖注入。扩展

    依赖注入一般有两种方式:依赖注入

    1)设置注入:IOC容器使用属性的setter方法来注入被依赖的实列;引用

    2)构造注入:IOC容器使用构造器来注入被依赖的实列;程序

相关文章
相关标签/搜索