IOC与DI简介
IOC:控制反转(Inverse Of Control)
在没用spring框架之前我们是这样写程序的:
private UserDao userDao = new UserDaoImpl();
也就是说UserServiceImpl类中有哪个具体类属性由他自己决定,此时的编程完完全全是控制在我们写程序人的手里,我们自己new userDao,也自己决定用哪个userDao的实现。此时我们是依赖于具体的实现类。
在使用了spring框架之后:
private UserDao userDao;
此时只指定了接口,没有具体的实现类,控制权限交给了spring来管理。由spring来初始化userDao
控制反转也就是说spring控制了原来的具体实现为抽象的概念,原来是直接针对具体的实现来编写代码,使用userDao的时候,直接使用其实现。
现在使用了spring之后,这个userDao交由spring来控制了,我们要做的就是做具体的实现。这样达到了面对接口编程。
控制反转概念很模糊,也有很多种版本解释,但是没必要死扣具体的理论。理解是什么意思即可。
DI:依赖注入(Dependency Injection)
1
2
3
|
< bean id = "userService" class = "com.fz.service.UserService" > < property name = "userDao" ref = "userDao" ></ property > </ bean > |
在这个userService中有个属性是userDao接口,假如我们调用userSercie的userAdd方法的时候,其实也就是在userService的实现类里面调用userDao的userAdd方法。这个userAdd方法的具体实现类依赖于spring初始化的userDao这个对象。
所以,可以理解为这个userService对象依赖于spring容器注入的userDao对象。
IOC与DI简介的更多相关文章
- Spring IoC 和 DI 简介(二)
Spring IoC 和 DI 简介 IoC:Inverse of Control(控制反转) 读作“反转控制”,更好理解,不是什么技术,而是一种设计思想,就是将原本在程序中手动创建对象的控制权,交由 ...
- Spring学习(二)Spring IoC 和 DI 简介
一.IOC(控制反转) 定义:反转控制 (Inversion Of Control)的缩写,即创建对象的反转控制. 正向控制:若要使用某个对象,需要自己去负责对象的创建. 反向控制:若要使用某个对象, ...
- Spring的ioc(DI)复习概念和原理简介
IOC的好处 ioc或者说di的概念很显然了,反转控制和依赖注入,那本来直接new就行的东西,为什么要搞这么复杂呢?? 开发维护方便,高层设计不用依赖底层的,不然底层一个类改下构造器,高层就全要改,因 ...
- IOC and DI
Spring.Net 技术简介 IOC and DI 一 简单介绍 IOC 控制转移,就是将创建放到容器里,从而达到接耦合的目的,DI是 在容器创建对象的时候,DI读取配置文 ...
- Spring 简单使用IoC与DI——XML配置
目录 Spring简介 导入jar包 Spring配置文件 Spring的IoC IoC简介 快速使用IoC Spring创建对象的三种方式 使用构造方法 使用实例工厂 使用静态静态工厂 Spring ...
- 一个由正则表达式引发的血案 vs2017使用rdlc实现批量打印 vs2017使用rdlc [asp.net core 源码分析] 01 - Session SignalR sql for xml path用法 MemCahe C# 操作Excel图形——绘制、读取、隐藏、删除图形 IOC,DIP,DI,IoC容器
1. 血案由来 近期我在为Lazada卖家中心做一个自助注册的项目,其中的shop name校验规则较为复杂,要求:1. 英文字母大小写2. 数字3. 越南文4. 一些特殊字符,如“&”,“- ...
- Spring 之初识IOC和DI
下载Spring jar包 Spring官网 下载地址 Sping核心jar包 IOC简介 IOC:控制反转,指以前程序自己创建对象,现在将创建对象的控制权交给了第三方(Spring)了 IoC底层实 ...
- 深入理解DIP、IoC、DI以及IoC容器
摘要 面向对象设计(OOD)有助于我们开发出高性能.易扩展以及易复用的程序.其中,OOD有一个重要的思想那就是依赖倒置原则(DIP),并由此引申出IoC.DI以及Ioc容器等概念.通过本文我们将一起学 ...
- 初识Spring框架实现IOC和DI(依赖注入)
学习过Spring框架的人一定都会听过Spring的IoC(控制反转) .DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC .DI这两个概念是模糊不清的,是很难理解的, IoC是 ...
随机推荐
- Django学习笔记之Django ORM Aggregation聚合详解
在当今根据需求而不断调整而成的应用程序中,通常不仅需要能依常规的字段,如字母顺序或创建日期,来对项目进行排序,还需要按其他某种动态数据对项目进行排序.Djngo聚合就能满足这些要求. 以下面的Mode ...
- Thinkphp5.0实战开发二------自动生成目录结构
序言 ThinkPHP5.0 具备自动创建功能,可以用来自动生成需要的模块及目录结构和文件等,自动生成主要调用\think\Build 类库.ThinkPHP5.0中模块文件夹在application ...
- 为什么@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
Spring Boot会自动根据jar包的依赖来自动配置项目,例如当你项目下面有HSQLDB的依赖,Spring Boot会自动创建默认的内存数据库的数据源DataSource, 但我们使用Mybat ...
- MR案例:WordCount改写
请参照wordcount实现一个自己的MapReduce,需求为: a. 输入文件格式: xxx,xxx,xxx,xxx,xxx,xxx,xxx b. 输出文件格式: ...
- cogs 547:[HAOI2011] 防线修建
★★★☆ 输入文件:defense.in 输出文件:defense.out 简单对比 时间限制:1 s 内存限制:128 MB 题目描述: 近来A国和B国的矛盾激化,为了预防不测,A国 ...
- ubuntu 18.04 64bit下如何安装python开发工具jupyterhub
注:这是多用户版本 1.安装依赖 sudo apt-get install npm nodes sudo apt-get install python3-distutils wget https:// ...
- [BZOJ1996] chorus合唱队
Description Input Output Sample Input 4 1701 1702 1703 1704 Sample Output 8 HINT 区间$dp$,首先每个点被放入队伍时队 ...
- hbase(二)hfile结构
HFile结构 截止hbase 1.0.2版本,hfile已经有3个版本,要深入了解hfile的话,还是要从第一个版本开始看起. hfile v1 Data Block:保存表中的数据,这部分可以被压 ...
- 虚拟机 Ubuntu18.04 tensorflow cpu 版本
虚拟机 Ubuntu18.04 tensorflow cpu 版本 虚拟机VMware 配置: 20G容量,可扩充 2G内存,可扩充 网络采用NAT模式 平台:win10下的Ubuntu18.04 出 ...
- bzoj 1192 鬼谷子的钱袋 数学
1192: [HNOI2006]鬼谷子的钱袋 Time Limit: 10 Sec Memory Limit: 162 MB Description 鬼谷子非常聪明,正因为这样,他非常繁忙,经常有各 ...