Spring初识(二)——IOC/DI

本文详细解析了控制反转(IOC)和依赖注入(DI)的概念,阐述了它们如何改变对象之间的依赖关系,以及在Spring框架中如何实现这两种设计模式。通过实例说明了IOC/DI带来的代码可维护性、可复用性和热插拔特性。
摘要由CSDN通过智能技术生成

文中的内容是根据杨章伟和吴为胜所著的Spring+Spring MVC+MyBatis从零开始学来写的。

1. 什么是控制反转(IOC)

  应用程序在没有引入IOC容器之前,对象A依赖对象B,那么A对象在实例化或者运行到某一点的时候,自己必须主动创建对象B或者使用已经创建好的对象B,其中无论是创建还是使用已创建的对象B,控制权都在应用程序自身。如果应用程序引入了IOC容器之后,对象A和对象B之间失去了直接联系,那么当对象A实例化和运行时,如果需要对象B,IOC容器就会主动创建一个对象B注入(依赖注入)到对象A所需要的地方。由此,对象A获得依赖对象B的过程,由主动行为变成被动行为,即把创建对象交给了IOC容器处理,控制权颠倒过来了,这就是所谓的控制反转。

2. 什么是依赖注入(DI)

  所谓依赖注入,就是由IOC容器在运行期间动态地将某种依赖关系注入对象之中。例如,将对象B注入(赋值)给对象A的成员变量。
  依赖注入(DI)和控制反转(IOC)是对同一件是请的不同描述,只是它们描述的角度不同。

3. 使用IOC/DI的好处

  (1) 可维护行比较好,便于单元测试、调试程序和诊断故障。代码中的每一个Class都可以单独测试,彼此之间互不影响,只要保证自身的功能无误即可,这就是组件之间低耦合或者无耦合的好处。
  (2) 可复用性好,我们可以把具有普遍性的功能独立出来,反复应用的项目中的其他部分,这是面向对象的基本特征。显然,IOC更好地贯彻了这个原则,提高了模块的可复用性。符合接口标准的实现都可以插接到支持此标准的模块中。
  (3) 生成对象的方式转为外置方式,就是把对象生成放在配置文件中进行定义。这样,当我们更换一个实现子类将会变得很简单,只要修改配置文件就可以了,完全具有热插拔的特性。

4. IOC/DI的实现

  Spring框架的主要功能是通过其核心容器来实现的。Spring框架提供的两种核心容器分别是BeanFactory和ApplicationContext。IOC/DI通常有setter(设置)注入和构造方法注入两种实现方式。

  4.1. setter()方法注入

  属性setter()方法注入:IOC容器使用setter()方法注入被依赖的实例。通过调用无参构造器或无参静态工厂方法实例化Bean后,调用该Bean的setter()方法,即可实现基于setter()方法的依赖注入。该方法简单、直观,容易理解。

  4.2. 构造方法注入

  构造方法注入:IOC容器使用构造方法注入被依赖的实例。基于构造方法的依赖注入通过调用戴灿灿数的构造方法来实现,每个参数代表着一个依赖。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值