[JavaWeb学习] Spring Ioc和DI概念思想

举报
开心星人 发表于 2022/09/26 10:30:38 2022/09/26
【摘要】 https://www.bilibili.com/video/BV1Fi4y1S7ix 黑马程序员学习所得 Spring Framework系统架构 IoC(Inversion of Control)控制反转使用对象时,由主动产生对象转换为由外部提供对象,此过程中对象创建控制权由程序转移到外部,此思想称为控制反转。现在有一个需求,我们想要更换数据层的实现为那么业务层中private Boo...

https://www.bilibili.com/video/BV1Fi4y1S7ix 黑马程序员学习所得

Spring Framework系统架构

AOP
在这里插入图片描述

IoC(Inversion of Control)控制反转

使用对象时,由主动产生对象转换为由外部提供对象,此过程中对象创建控制权由程序转移到外部,此思想称为控制反转。

在这里插入图片描述
现在有一个需求,我们想要更换数据层的实现为
在这里插入图片描述
那么业务层中private BookDao bookDao = new BookDaoImp1();必须也要进行相应的更改。那么源代码动了,就需要重新编译、重现测试、重新部署、重新发布。
究其原因就是我们在一个类中写了其他类的实现,导致代码耦合度过高
那我们就删除这个类的实现private BookDao bookDao;
但是现在程序肯定运行不了,因为没有实现对象

解决方案:使用对象时,在程序中不要主动使用new产生对象,转换为由外部提供对象
这样的思想就是IoC(Inversion of Control)控制反转

==Spring技术对Ioc思想进行了实现:Spring提供了一个容器,称为Ioc容器,用来充当Ioc思想中的外部。也就是由主动new对象转换为由IOC提供对象==

在这里插入图片描述
Ioc容器负责对象的创建、初始化等一系列工作,被创建或被管理的对象在IoC容器中统称为Bean

Service运行依赖Dao对象运行。
那么直接在Ioc容器中给两个对象添加依赖。

DI(Dependency Injection)依赖注入:在容器中建立bean与bean之间的依赖关系的整个过程,称为依赖注入

在这里插入图片描述

目标:充分解耦
使用Ioc容器管理bean(Ioc)
在IoC容器内将有依赖关系的bean进行关系绑定(DI)

最终效果:使用对象时不仅可以直接从IoC容器中获取,并且获取到的bea已经绑定了所有的依赖关系

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。