一文讲解Spring中的IoC和DI

  • 所谓的IoC,就是由容器来控制对象的生命周期和对象之间的关系。控制对象生命周期的不再是引用它的对象,而是容器,这就叫控制反转(Inversion of Control)。

在这里插入图片描述

  • 以前是我们想要什么就自己创建什么,现在是我们需要什么容器就帮我们送来什么
    在这里插入图片描述

假如A想要找一个女朋友,以前没有IoC,那么A只能自食其力,自己去搭讪,去要微信,但是有了IoC之后,A可以去找婚介所来帮忙给自己介绍,婚介所就相当于一个IoC容器,A就是一个对象,A需要的女朋友就是另一个对象,A不用关心女朋友是怎么来的,只需要告诉婚介所自己需要什么样的女朋友,婚介所就帮忙去找;

  • Spring倡导的开发方式就是这样,所有类的创建和销毁都通过Spring容器来,不再是开发者去new了,这样就实现了对象的解耦;
    于是,对于某个对象来说,以前是它控制它依赖的对象,现在是所有对象都被Spring控制;

接下来说下什么是DI

  • IOC是一种思想,DI是实现IOC的具体方式,比如说利用注入机制(如构造器注入,Setter注入)将依赖传递给目标对象;

打个比方,你现在想吃韭菜馅的饺子,这时候就有人用针管往你吃的饺子里注入韭菜鸡蛋馅。就好像 A 类需要 B 类,以前是 A 类自己 new 一个 B 类,现在是有人把 B 类注入到 A 类里。

为什么要使用IoC呢?

  • 在平时的 Java 开发中,如果我们要实现某一个功能,可能至少需要两个以上的对象来协助完成,在没有 Spring 之前,每个对象在需要它的合作对象时,需要自己 new 一个,比如说 A 要使用 B,A 就对 B 产生了依赖,也就是 A 和 B 之间存在了一种耦合关系。

    有了 Spring 之后,就不一样了,创建 B 的工作交给了 Spring 来完成,Spring 创建好了 B 对象后就放到容器中,A 告诉 Spring 我需要 B,Spring 就从容器中取出 B 交给 A 来使用。

    至于 B 是怎么来的,A 就不再关心了,Spring 容器想通过 new来 创建 A 还是 new 创建 B,无所谓。

    这就是 IoC 的好处,它降低了对象之间的耦合度,使得程序更加灵活,更加易于维护。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值