springIOC

一、springIOC

1.什么是springIOC控制反转或者依赖注入DI ???

(spring两大机制之一,还有SpringAOP面向切面编程)

引申:传统模式下 一个 java对象调用另一个java对象的方式是什么? new 关键字

​ 含义:在使用了spring框架之后,对象的实例不再由调用者来创建,而是由spring容器来创建,spring容器会负责控制程序之间的关系,而不是由调用者的程序代码直接控制,这样,控制权由应用程序代码转移到了spring容器,控制权发生了反转。(为什么要把这种方式叫做控制反转呢?)。

通过程序理解

分析程序,这里DemoController和DemoServiceImpl之间就有依赖关系。如果我们没有用spring去管理控制对象,那么我的程序就是这样写的
在这里插入图片描述

但是采用了springboot之后 我们可以看到 DemoController上面有注解**@RestController** 其下级有**@Controller注解 再下一级有@Component**注解

同时可以看到DemoServiceImpl类上面有**@Service** 其下一级也是**@Component**注解

spring程序会自动扫描类上面是否有@Component注解 如果有 就会创建这个类的实例 并将该实例保存到spring bean容器中。— 对象由spring来创建不是由调用者创建
在这里插入图片描述
DemoController 需要依赖 DemoServiceImpl 对象 并调用该对象的sayHello方法。现在这二个对象都被spring容器持有了。所以spring容器可以将DemoServiceImpl 的实例注入到 DemoController 实体对象中 而注入的方式有上图的三种模式。— 依赖注入DI

3.依赖注入三种方式

构造器方式setter方法注解方式

4.IoC的原理

控制反转是Spring框架的核心。其原理是基于面向对象(OO)设计原则的The Hollywood Principle:Don’t call us, we’ll call you(别找我,我会来找你的)。也就是说,所有的组件都是被动的,所有的组件初始化和调用都由容器负责。组件处在一个容器当中,由容器负责管理。简单的来讲,就是由容器控制程序之间的关系,而非传统实现中,由程序代码直接操控,即在一个类中调用另外一个类。这也就是所谓“控制反转”的概念所在:控制权由应用代码中转到了外部容器,控制权的转移,即所谓反转。

5.IOC优势

(1).可维护性比较好,非常便于进行单元测试,便于调试程序和诊断故障。代码中的每一个Class都可以单独测试,彼此之间互不影响,只要保证自身的功能无误即可,这就是组件之间低耦合或者无耦合带来的好处。

(2).每个开发团队的成员都只需要关注自己要实现的业务逻辑,完全不用去关心其他人的工作进展,因为你的任务跟别人没有任何关系,你的任务可以单独测试,你的任务也不用依赖于别人的组件,再也不用扯不清责任了。所以,在一个大中型项目中,团队成员分工明确、责任明晰,很容易将一个大的任务划分为细小的任务,开发效率和产品质量必将得到大幅度的提高。

(3).可复用性好,我们可以把具有普遍性的常用组件独立出来,反复应用到项目中的其它部分,或者是其它项目,当然这也是面向对象的基本特征。显然,IoC更好地贯彻了这个原则,提高了模块的可复用性。符合接口标准的实现,都可以插接到支持此标准的模块中。

(4).IoC生成对象的方式转为外置方式,也就是把对象生成放在配置文件里进行定义,这样,当我们更换一个实现子类将会变得很简单,只要修改配置文件就可以了,完全具有热插拨的特性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lr-fcc

你的鼓励是我的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值