• 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里面配置的就是用来绑定dao与service层的bean关系的

    bean配置

    bean别名

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

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

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

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

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

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

    bean作用域

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

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

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

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

  • 相关阅读:
    【语义分割】语义分割概念及算法介绍
    【大厂AI课学习笔记NO.68】开源和开源发展情况
    老生常谈的商城系统(Asp.Net+uniapp)
    GetX导航学习笔记
    从替代走向引领,永洪科技迈向全球化
    【文生图系列】如何在Stable Diffusion Webui中使用ControlNet
    vue项目打包后dist目录运行方法
    帆软FineReport本地部署springboot
    UE4基础必学系列:数据驱动
    K8S数据采集组件metrics-server安装
  • 原文地址:https://blog.csdn.net/qq_52480906/article/details/126344251