Spring中IOC和DI的概念
假设在UserService类中有一个userDao的成员变量
在没有spring的时候,我们对userDao赋值是这样的
UserService{
private UserDao userDao = new UserDaoImpl()
}
有了spring的时候,对其赋值是通过配置文件中<ref local=""/>赋值的。
IOC和DI
IOC(inverse of control 即:反转控制 或 控制反转)
控制:对于成员变量赋值的控制权
反转控制:把对于成员变量的控制权由代码中转移(反转)到了配置文件中来完成
好处:解耦合
原理:Spring的工厂
在面试的时候,如果你在给别人讲什么是IOC的时候,内容如下:
IOC中文名字叫反转控制,它最核心的概念就是把成员变量的赋值从代码转移到了配置文件中来完成,那么作为这种IOC机制,可以让我们的程序进行很好的解耦合处理,比如我曾经写的代码中,我在Service中创建了Dao的成员变量,我就通过IOC在配置文件当中完成了赋值,最后在编码的时候我的Dao仅仅体现的是接口,我的程序就没有耦合了。之所以Spring能有IOC这种机制,是因为Spring基于工厂设计模式给我们做的特殊的处理。
DI(dependency injection)
概念:当一个类需要另一个类时,等效于依赖另一个类,那么就把那个类作为本类的成员变量,通过spring的配合文件为其赋值。
例如:
Spring中IOC和DI的概念相关推荐
- 【Java Web开发指南】解析Spring中Ioc和DI(入门Demo)
文章目录 1 Spring概述 2 Spring的体系结构 3 Ioc代码实现 4 DI代码实现 5 代码目录 1 Spring概述 一种Java应用开发框架,而SpringMVC是针对Web的框架. ...
- Spring中IoC和DI的理解
通常情况下,Spring是学习者学完se部分马上就要面对的一个轻量级框架.实际上,Spring框架功能很强大,而IoC和AOP是两个比较重要的知识点.经过我一段时间学习感到IoC要比AOP容易理解.今 ...
- Spring-学习笔记03【Spring的IOC和DI】
Java后端 学习路线 笔记汇总表[黑马程序员] Spring-学习笔记01[Spring框架简介][day01] Spring-学习笔记02[程序间耦合] Spring-学习笔记03[Spring的 ...
- Spring 框架 IOC 与 DI 的总结
一:Spring并天下 1:Spring帝国: ①:Spring崛起 什么是Spring:源于Rod Johnson在其著作<Expert one on one J2EE design and ...
- Spring中IOC和AOP的详细解释(转)
原文链接:Spring中IOC和AOP的详细解释 我们是在使用Spring框架的过程中,其实就是为了使用IOC,依赖注入,和AOP,面向切面编程,这两个是Spring的灵魂. 主要用到的设计模式有工厂 ...
- Spring框架——IOC、DI
本篇博客主要介绍Java中的IOC和DI,以及在String框架中的应用.首先,我们将对IOC和DI进行概念介绍,然后讲解它们的关系及在String框架中的应用,最后通过一个实例来展示它们的具体用法. ...
- Spring的IOC与DI的个人杂谈
Spring的IOC与DI的个人杂谈 一.前言 初学者初学Spring框架的时候,往往是伴随着SSM三大框架的学习而了解的.但是这样是不好的,我们应该在任务之余去学习一些本框架一些核心的知识点. 本篇 ...
- spring中ioc是什么
摘自:https://www.jb51.net/article/123900.htm IoC是一种让服务消费者不直接依赖于服务提供者的组件设计方式,是一种减少类与类之间依赖的设计原则.下面通过本文给大 ...
- spring之IOC和DI关系
spring之IOC和DI关系 IOC:控制反转:那么什么是控制反转呢? 对于程序开发人员来说,在没有使用spring之前,我们如果需要某一个对象,那么我们会直接去new这个对象,在程序员的世界里还有 ...
- 请简述什么是spring的ioc和di_请简述什么是 Spring 的 IoC 和 DI?_学小易找答案
[连线题]把微生物和适用的生物反应器连线 [判断题]混凝土保护层是指从混凝土表面到箍筋公称直径外边缘之间的最小距离. [多选题]下列哪些问题是我们人类目前面临的严峻生态环境问题? [单选题]这是什么器 ...
最新文章
- 2021年4月19日 深圳头条后台开发实习面试(二面)(含总结)
- 不能往Windows Server 2008 R2 Server中复制文件的解决方法
- 全球及中国一般手术器械行业投资态势与发展价值评估报告2022版
- HTTP流媒体播放技术发展以及nginx点播源站
- 乐兔淘购物分享2.4版本功能无限制 界面够美观时尚
- python实验三答案_20194123 实验三《Python程序设计》实验报告
- Powershell进阶学习(6) 部署 Windows PowerShell Web 访问
- 以太网设计FAQ:以太网MAC和PHY
- 电力拖动自动控制系统matlab,基于Matlab的《电力拖动自动控制系统》课程教学改革...
- linux网络操作系统项目教程课本,Linux网络操作系统项目式教程(CentOS7.6)-课后练习题.docx...
- python编写程序、一个富翁与陌生人做交易_智慧职教云课堂Python程序设计(常州工业职业技术学院)题目答案...
- ab并发测试-Linux
- 在哪里写博客比较好?不同写作平台的横向对比
- Java面试必问的HashMap,基础mysql笔试题及答案
- Flutter学习之Dart语言基础(内置类型)
- linux SIGSEGV信号 内存访问错误 Segmentation fault
- 有哪些小巧好用的pdf阅读器
- CICD系列之k8s
- 程序员如何写好一篇技术文章?
- 在vue组件内单独引入css
热门文章
- ArrayList的add方法值被覆盖(android项目)
- UITextField-IOS开发
- 人工智能与深度学习概念(3)——目标分类-CNN
- Linux操作系统中GDB工具常见用法(二)
- 链表简介(二)——在单向链表中插入节点
- 使用JsonCpp编写JSON封装程序的方法
- 项目设计与范围管理(笔记)
- document.frames()与document.frames[]的区别
- varchar,char,varchar2,mybatis查询无返回
- 罗马数字与阿拉伯数字转换