SSM学习——IoC与DI(1)

感谢黑马!

导读

课程内容:
1,Spring
2,SpringMVC
3,Maven高级
4,SpringBoot
5,MyBatisPlus

收获:
基于SpringBoot实现基础SSM框架整合
掌握第三方技术与SpringBoot思想整合

Spring的专业角度:
1,简化开发:IoC,AoP–>事务处理
2,框架整合;MyBatis,MyBatisPlus…

初识Spring

Spring家族

spring官网
我们要学的是:SpringFramework:Spring框架
在这里插入图片描述

Spring Framework

Spring Framework是spring生态圈中最基础的项目,是其它项目的根基
在这里插入图片描述

springframekork学习线路
在这里插入图片描述

传统的代码书写方式耦合度非常高,如果一旦动了底层的东西,那么需要重新测试,重新部署等,十分不便
解决方案:使用对象时,在程序中不要主动使用new对象,转为由外部提供对象(“你不就是要new一个对象吗,你不要自己写,我给你写”)这就是IoC

IoC

Inversion of Control控制反转:将对象的创建控制权由程序转移到外部
Spring提供了一个容器,叫做IoC容器(即Core Container),来充当IoC思想中的“外部”
IoC容器负责对象的创建,初始化等一系列工作,被创建或被管理的对象在IoC容器中统称Bean

假设现在,我们的service交给IoC容器处理了,结果一运行,报错了,说:我的service需要依赖Dao运行啊,怎么办?IoC说:那我干脆也把你的Dao交给我处理好了,这个行为就叫做:DI(Dependency Injection)依赖注入

DI

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

目标:充分解耦

使用IoC容器管理bean(IoC)
在IoC容器内将有依赖关系的bean进行关系绑定
最终便是:使用对象时不仅可以直接从IoC容器中获取,并且获取到的bean已经绑定了所有的依赖关系

IoC入门案例

在这里插入图片描述

1,分析原案例
在这里插入图片描述
在这里插入图片描述

以上是普通的执行流程,现在我们需要把它改造成IoC模式

1 pom导包

在这里插入图片描述

然后刷新maven,再导入spring config的xml
在这里插入图片描述

然后在xml中配置需要IoC化的类
在这里插入图片描述

现在新建一个主类APP2进行拿容器拿方法
在这里插入图片描述

注意,bean定义id属性在同一个文件上下文中不要重复!不然咋找呢

DI入门案例

在这里插入图片描述

3:在service实现类里面,我们采用了set方法来获取Dao对象
在这里插入图片描述

4:怎么联系上service与dao之间的关系?我们在配置里,把bookservice里面添加上bookdao的联系方式即可
在这里插入图片描述

在这里插入图片描述

然后即可实现方法
在这里插入图片描述

需要注意的的是,我们在xml里面配置的<property>就是用来绑定dao与service层的bean关系的

bean配置

bean别名

bean基础配置
在这里插入图片描述

bean的别名:在配置xml中,我们可以在<bean>里面写上name标签以供给name起别名
在这里插入图片描述
在这里插入图片描述

然后我们在主方法里改一下别名,并运行一下,可以发现还是一样能执行的
在这里插入图片描述
在这里插入图片描述

因此其实我们能发现<bean>的id属性与name属性是等同的,ref属性可以引用他们俩任何一个(但建议还是id引用)

接下来是一个需要我们会阅读的错误:
在这里插入图片描述

这告诉我们,我们把bean的名字写错了,也就是说,要么getBean()的参数写错名字了,要么xml里的名字写错了

bean作用域

我们尝试比较两个来自同一个bean的地址,结果发现他们地址是一样的,说明spring默认给我们创建的bean是单例的
在这里插入图片描述

如果想要创造非单例的,就需要在xml里面创建了
在这里插入图片描述

现在便是不同的地址了
在这里插入图片描述
在这里插入图片描述

为什么spring要默认单例呢?因为spring为了解决开销问题和处理速度,考虑到容器承受压力,(如果有一个新的业务就造一个bean对象,那么岂不是无穷无尽了么)因此,默认使用单例,提高复用性
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值