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简介的更多相关文章

  1. Spring IoC 和 DI 简介(二)

    Spring IoC 和 DI 简介 IoC:Inverse of Control(控制反转) 读作“反转控制”,更好理解,不是什么技术,而是一种设计思想,就是将原本在程序中手动创建对象的控制权,交由 ...

  2. Spring学习(二)Spring IoC 和 DI 简介

    一.IOC(控制反转) 定义:反转控制 (Inversion Of Control)的缩写,即创建对象的反转控制. 正向控制:若要使用某个对象,需要自己去负责对象的创建. 反向控制:若要使用某个对象, ...

  3. Spring的ioc(DI)复习概念和原理简介

    IOC的好处 ioc或者说di的概念很显然了,反转控制和依赖注入,那本来直接new就行的东西,为什么要搞这么复杂呢?? 开发维护方便,高层设计不用依赖底层的,不然底层一个类改下构造器,高层就全要改,因 ...

  4. IOC and DI

    Spring.Net 技术简介 IOC and DI   一 简单介绍            IOC 控制转移,就是将创建放到容器里,从而达到接耦合的目的,DI是 在容器创建对象的时候,DI读取配置文 ...

  5. Spring 简单使用IoC与DI——XML配置

    目录 Spring简介 导入jar包 Spring配置文件 Spring的IoC IoC简介 快速使用IoC Spring创建对象的三种方式 使用构造方法 使用实例工厂 使用静态静态工厂 Spring ...

  6. 一个由正则表达式引发的血案 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. 一些特殊字符,如“&”,“- ...

  7. Spring 之初识IOC和DI

    下载Spring jar包 Spring官网 下载地址 Sping核心jar包 IOC简介 IOC:控制反转,指以前程序自己创建对象,现在将创建对象的控制权交给了第三方(Spring)了 IoC底层实 ...

  8. 深入理解DIP、IoC、DI以及IoC容器

    摘要 面向对象设计(OOD)有助于我们开发出高性能.易扩展以及易复用的程序.其中,OOD有一个重要的思想那就是依赖倒置原则(DIP),并由此引申出IoC.DI以及Ioc容器等概念.通过本文我们将一起学 ...

  9. 初识Spring框架实现IOC和DI(依赖注入)

    学习过Spring框架的人一定都会听过Spring的IoC(控制反转) .DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC .DI这两个概念是模糊不清的,是很难理解的, IoC是 ...

随机推荐

  1. ROS学习

    随着机器人领域的快速发展和复杂化,代码的复用性和模块化的需求原来越强烈,而已有的开源机器人系统又不能很好的适应需求.2010年Willow Garage公司发布了开源机器人操作系统ROS(robot ...

  2. Spring JdbcTemplate的queryForList(String sql , Class<T> elementType)返回非映射实体类的解决方法

    Spring JdbcTemplate的queryForList(String sql , Class<T> elementType)易错使用 一直用ORM,今天用JdbcTemplate ...

  3. 20145327 实验四 Andoid开发基础

    20145327 实验四 Andoid开发基础 安装Android Studio 安装过程出现未找到SDK的错误,只需在打开界面找到右下角的设置按钮,将路径设置为如下就可以运行.(默认安装路径) 设计 ...

  4. linux信号的介绍

    1.基本概念    中断:        中断是系统对于异步事件的响应        中断信号        中断源        现场信息        中断处理程序        中断向量表   ...

  5. libevent库介绍--事件和数据缓冲

    首先在学习libevent库的使用前,我们还要从基本的了解开始,已经熟悉了epoll以及reactor,然后从event_base学习,依次学习事件event.数据缓冲Bufferevent和数据封装 ...

  6. springmvc.xml配置图解

  7. sqlite的Top筛选

    select [CollectDateTime] as '时间',[Channel_34] as '通道34',[Channel_54] as '通道54' from [DataTable] wher ...

  8. svn的分支

    svn的分支使用 新建一个项目的时候,选择建立自带trunk,branches和tags文件夹的. 其中trunk作为主开发. 有需要的时候,从trunk创建分支到对应的branches下面,新建分支 ...

  9. spark SQL学习(数据源之json)

    准备工作 数据文件students.json {"id":1, "name":"leo", "age":18} {&qu ...

  10. PAT1072. Gas Station (30)

    题目的测试用例数据有问题! 第一个Case 应该是 G1 2.0 3.2 一直在想3.3分母的3怎么来了.ORZ #include <iostream> #include <ccty ...