当前位置: 首页 > news >正文

IOC理论

IOC理论

1、UserDao层
2、UserDaoImpl实现类
3、UserService业务接口
4、UserServiceImpl业务实现类

在我们之前的业务中,用户的需求可能会影响到我们原来的代码,我们需要根据用户的需求区修改源代码!如果程序量十分大,修改一次的成本代价十分昂贵。
在这里插入图片描述

我们使用一个Set接口实现

 private UserDao userDao = new UserDaoImpl();

   //利用set进行动态实现值得注入
   public void setUserDao(UserDao userDao) {
       this.userDao = userDao;
   }

之前,程序是主动创建对象,控制权在程序员手上
使用了set注入之后,程序不再有主动性,而是编程了被动的接收对象

这种思想,从本质上解决了问题,程序员不用再去管理对象的创建了。系统的耦合性大大降低,可以更加专注在业务上!这是IOC的原型。
在这里插入图片描述

IOC本质

控制反转IoC,是一种设计思想,DI(依赖注入)是实现IoC的一种方法,也有人认为DI只是IoC的另一种说法。没有IoC的程序中,我们使用面向对象编程,对象的创建于对象间的依赖关系完全硬编码在程序中,对象的创建由程序自己控制,控制反转后将对象的创建转移给第三方,个人认为所谓控制反转就是:获得依赖对象的方式反转了。

采用XML方式配置Bean的时候,Bean的定义信息是和实现分离的,而采用注解的方式可以把两者合为一体,Bean的定义信息直接以注解的形式定义在实现类中,从而达到了零配置的目的。

控制反转是一种通过描述(XML或注解)并通过第三方去生产或获取特定对象的方式。在Spring中实现控制反转的是IoC容器,其实现方法是依赖注入(Dependency Injection,DI)。

相关文章:

  • nginx官网下载,安装时隐藏版本号、响应头信息、容器信息
  • 【量化交易】 量化因子 风险类因子
  • 基于springboot的张仲景药房(药店)管理系统
  • SpringBoot线上项目隐藏Swagger接口文档
  • 网课查题接口 搜题公众号对接题库教程 (附赠题库接口)
  • Aptos VS Sui,盘点两大 Move 系新公链的创新异同
  • vulnhub DriftingBlues: 6
  • 【JVM基础】虚拟机栈
  • 单调栈专题
  • msf编码免杀
  • 【牛客刷题】每日一练——回文字符串
  • SpringBoot日志管理
  • 软实力-领导力
  • Docker高级-3.Docker网络与Docker-compose容器编排
  • 一览—教程2020《软件开发领域》ios证书
  • ----------
  • 【刷算法】从上往下打印二叉树
  • 【跃迁之路】【585天】程序员高效学习方法论探索系列(实验阶段342-2018.09.13)...
  • C++入门教程(10):for 语句
  • Date型的使用
  • Docker 笔记(1):介绍、镜像、容器及其基本操作
  • JS学习笔记——闭包
  • MQ框架的比较
  • puppeteer stop redirect 的正确姿势及 net::ERR_FAILED 的解决
  • seaborn 安装成功 + ImportError: DLL load failed: 找不到指定的模块 问题解决
  • Spring Security中异常上抛机制及对于转型处理的一些感悟
  • Vue2.0 实现互斥
  • XForms - 更强大的Form
  • 纯 javascript 半自动式下滑一定高度,导航栏固定
  • 后端_ThinkPHP5
  • 每天10道Java面试题,跟我走,offer有!
  • 前端性能优化——回流与重绘
  • 前嗅ForeSpider采集配置界面介绍
  • 入门到放弃node系列之Hello Word篇
  • 山寨一个 Promise
  • 深入浅出Node.js
  • 我从编程教室毕业
  • 写给高年级小学生看的《Bash 指南》
  • 学习使用ExpressJS 4.0中的新Router
  • ​软考-高级-系统架构设计师教程(清华第2版)【第1章-绪论-思维导图】​
  • ​学习一下,什么是预包装食品?​
  • $(selector).each()和$.each()的区别
  • (cljs/run-at (JSVM. :browser) 搭建刚好可用的开发环境!)
  • (delphi11最新学习资料) Object Pascal 学习笔记---第7章第3节(封装和窗体)
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (补)B+树一些思想
  • (附程序)AD采集中的10种经典软件滤波程序优缺点分析
  • (附源码)spring boot车辆管理系统 毕业设计 031034
  • (免费分享)基于springboot,vue疗养中心管理系统
  • (求助)用傲游上csdn博客时标签栏和网址栏一直显示袁萌 的头像
  • (转载)Google Chrome调试JS
  • .[backups@airmail.cc].faust勒索病毒的最新威胁:如何恢复您的数据?
  • .md即markdown文件的基本常用编写语法
  • .Net 应用中使用dot trace进行性能诊断
  • .Net(C#)常用转换byte转uint32、byte转float等