IOC容器与DI依赖注入示例

news/2024/12/23 4:13:14/

IOC容器与DI依赖注入示例

    • IOC深入理解
      • IOC示例:
    • DI深入理解
      • DI示例

IOC深入理解

我们先通过几个问题来加深一下对IOC的理解

  • (1)Spring是使用IOC容器来管理bean对象的,我们主要管理什么?

主要管理项目中所使用到的类对象,比如(Service层对像和Dao层对象)

  • (2)如何将被管理的对象告知IOC容器?

使用配置文件
Spring配置文件

  • (3)被管理的对象交给IOC容器,要想从容器中获取对象,我们如何获取到IOC容器?

Spring框架提供相应的接口

  • (4)IOC容器得到后,如何从容器中获取bean?

调用Spring框架提供对应接口中的方法

  • (5)使用Spring导入哪些坐标?

用别人的东西,就需要在pom.xml添加对应的依赖

IOC示例:

接下来我们完整的来熟悉一下流程:

1、首先我们需要导入Spring依赖,使其变成Spring项目

引入Spring

2、创建配置文件并配置Bean

配置bean

3、主程序中便可引用
使用

我们之前说过充分解耦的结果是使业务层中不在保留数据层对象,但是很明显,我们的代码依然在service层中new了dao层对象如下图所示,下面我们就通过DI解决完成完全解耦。
不完全解耦

DI深入理解

要想实现依赖注入,必须要基于IOC管理Bean

-(1)Service中使用new形式创建的Dao对象是否保留?

需要删除掉,最终要使用IOC容器中的bean对象

  • (2)Service中需要的Dao对象如何进入到Service中?

在Service中提供方法,让Spring的IOC容器可以通过该方法传入bean对象

  • (4)Service与Dao间的关系如何描述?

同样使用配置文件

DI示例

1、删除service层中new的dao层对象并在service层中提供相应的set方法

这一步相当于删掉业务层的dao对象并告诉service层需要的dao对象该如何获取(通过set方法),结束时,我们还不知道二者关系,需要利用配置文件建立关系
修改service层

2、修改配置文件建立service层与dao层的关系

配置修改

文章提及代码压缩包资源


http://www.ppmy.cn/news/48266.html

相关文章

在现成的3D打印机上进行实验理论:一种数据孪生的攻击探测框架

在现成的3D打印机上提供了一种DT中攻击探测框架的DT解决方案的实验演示,作为说明性CPMS资源。通过网络安全DT对打印机正常运行、异常运行和攻击三种情况下的实验数据进行收集和分析,得出攻击检测结果。实验装置概述如下图所示。该实验研究是在现实世界设…

tokenURI的实现方式

做数字藏品最重要的function是tokenURI(tokenId)。 实现1 基本路径tokenID ERC721 function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {_requireMinted(tokenId);string memory baseURI _baseURI();return bytes(baseURI).length &…

HarmonyOS原子化服务卡片整改、下架、升级失败部分原因及处理办法

随着HarmonyOS应用体系相关规则、团队的不断发展和完善,早期上架运营的HarmonyOS原子化服务卡片,很多都收到了整改、下架的通知,主要集中在用户协议、隐私声明、服务卡片的设计规范性等细节方面的问题;需要进行优化调整升级才行。…

源码:LeakCanary

一、介绍 自动检测内存泄漏的检查工具 二、使用 debugImplementation com.squareup.leakcanary:leakcanary-android:2.5debugImplementation只在debug模式的编译和最终的debug apk打包时有效 Memory Profiler 使用步骤 生成的内存泄漏快照 会放在sdcard/Download/leakcanar…

SSR在天猫优品大促会场的探索实践

BBC 发现其网站加载时间每增加一秒,用户便会流失 10%。为提高页面的秒开率,我们不断探索着优化策略,仅仅在浏览器领域下的优化已经满足不了我们的极致要求,开始往服务端方向不断探索。本文将讨论业务接入SSR的几个问题&#xff1a…

Spring Security --- formLogin配置

目录 环境准备 配置自定义登录表单页面 配置登录成功的跳转页面方式 配置登录失败的跳转页面方式 前端表单参数获取 CustomWebSecurityConfigurerAdapter配置类代码示例 环境准备 创建springboot项目引入spring security框架引入thymeleaf模板引擎 配置自定义登录表单页面…

水平居中、垂直居中的几种方法

水平居中的方法: 若是针对inline, 内联块inline-block, 内联表inline-table, inline-flex元素及img,span,button等元素 父元素设置 text-align:center; 绝对定位;弹性布局;grid网格布局 不定宽块状元素 设置 margin:auto; 绝对定…

第二章:uniapp整合axios之真机测试两问题

第二章:uniapp整合axios之真机测试两问题 上一章节,笔者编写了uniapp整合axios并实现前后端跨域请求的方案,完成了这些基本配置后,在浏览器端的测试基本是可以完成了,但是当笔者将程序运行到手机时,却出现…