7.3.1: 理解依赖注入

本文介绍了依赖注入的概念及其在Spring框架中的应用。依赖注入允许组件间解耦,通过外部容器自动提供所需实例,Spring利用此特性实现了灵活的组件管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

纵观所有的Java应用,它们都是一种典型的依赖型应用,也就是由一些互相协作的对象构成的。Spring把这种互相协作的关系称为依赖关系。譬如A组件调用了B组件的方法,我们可称A组件依赖于B组件。

使用依赖注入,不仅可以为Bean注入普通的属性值,还可以注入其他Bean的引用。通过这种依赖注入,JavaEE应用中的各种组件不需要以硬编码方式耦合在一起,甚至无须使用工厂模式。依赖注入达到的效果,非常类似于传说中的共产主义,当某个Java实例需要其他Java实例时,系统自动提供所需要的实例,无须程序显式获取。

可见依赖注入是目前最优秀的解耦方式。依赖注入让Spring的Bean以配置文件组织在一起,而不是以硬编码的方式耦合在一起。

Spring极好地利用了依赖注入,但是Spring既不是依赖注入的首创者,也不是依赖注入容器的唯一选择。例如HiveMind,它也是一个开源的依赖注入容器。

理解依赖注入:

虽然Spring并不是依赖注入的首创者,但Johnson是第一个高度重视以配置文件来管理Java实例的协作关系的人,它给这种方式起了一个名字:控制反转(IOC,Inversion of Control)。但这个名称极其晦涩,在后来的日子里,Martine  Fowler为这种方式起了另一个相对简单的称呼:依赖注入(DI,Dependency Injection)。所以依赖注入和控制反转是一个意思。不管是依赖注入还是控制反转,都说明Spring采用动态、灵活的方式来管理各种对象。对象和对象之间的具体实现互相透明。

总结:所谓依赖注入,是指程序运行过程中,如果需要另一个对象协作(调用它的方法,访问它的属性)时,无须在代码中创建被调用者,而是依赖于外部容器的注入。Spring的依赖注入对调用者和被调用者几乎没有任何要求,完全支持对POJO之间依赖关系的管理。

依赖注入通常有如下两种:

设值注入IOC容器使用属性的setter方法来注入被依赖的实例
构造注入IOC容器使用构造器来注入被依赖的实例



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值