zoukankan      html  css  js  c++  java
  • IOC与DI的区别

    一、IOC介绍

    1.IOC是控制反转。

    2.传统资源查找方式:要求组件向容器发起请求,查找资源作为回应,容器适时返回资源。

    3.IOC查找方式:容器会主动将资源提供给它所管理的组件,组件只需要选择一个合适的方式来接收资源,也被称为查找的被动式。

    4.创建对象实例的控制权从代码控制剥离到IOC容器控制(之前的写法,由程序代码直接操控使用new关键字),实际就是你在xml文件控制,控制权的转移是所谓反转,侧重于原理。

    二、DI介绍

    1.DI是依赖注入

    2.IOC的另一种表达方式:组件以一些预先定义好的方式(如:setter方法)接收来自容器的资源注入。

    3.相对于IOC而言,这种表述更加直接。

    4.创建对象实例时,为这个对象注入属性值或其它对象实例,侧重于实现。

    属性注入(最常用)

    1.通过set方法注入Bean的属性值或依赖的对象。

    2.name属性:制定Bean属性set方法后的属性名。

    3.value属性值:可以使(value)子节点指定属性值。

    构造器注入

    1.通过构造器注入Bean属性值或依赖对象,它保证Bean实例在实例化后可以使用。

    2.构造器注入在<constractor-arg>一样。

    三、区别

    1.它们是spring核心思想的不同方面的描述。

    2.依赖注入和控制反转是对同一件事情的不同描述,从某个方面讲,就是它们描述的角度不同。

    依赖注入是从应用程序的角度在描述,可以把依赖注入描述完整点:应用程序依赖容器创建并注入它所需要的外部资源;

    而控制反转是从容器的角度在描述,描述完整点:容器控制应用程序,由容器反向的向应用程序注入应用程序所需要的外部资源。

  • 相关阅读:
    mysql六:数据备份、pymysql模块
    mysql三:表操作
    mysql四:数据操作
    剑指offer-数组
    剑指offer-回溯
    中缀表达式到后缀表达式的转换
    大数取余算法的证明及实现
    Windows下匿名管道进程通信
    Windows下使用命令行界面调用VS2015编译器编译C++程序方法
    6 个技巧,提升 C++11 的 vector 性能
  • 原文地址:https://www.cnblogs.com/zdf159/p/7252949.html
Copyright © 2011-2022 走看看