• 谈谈你对Spring IOC和DI的理解,以及它们的区别


    谈谈你对Spring IOC 和 DI的理解,以及它们有什么区别?

      IOC是什么?

        IOC--Inversion of Control,即控制反转,不是什么技术,而是一种设计思想.IOC意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制.

      IOC的优势是什么?

        IOC是一个重要的面向对象编程的法则,它能指导我们如何设计出松耦合,更优良的程序,传统的应用程序都是由我们在类的内部主动创建依赖对象,从而导致类与类之间的高耦合,有了IOC容器之后,把创建和查找依赖对象的控制权交给了IOC容器,由容器进行注入组合对象,所以对象和对象之间是松耦合的.

      DI是什么?

        DI--Dependency Injection,即依赖注入,组件之间依赖关系由容器在运行期决定,即由容器动态的将某个依赖关系注入到组件当中,依赖注入的目的并非为软件系统带来更多的功能,而是为了提升组件重复使用的频率,并为系统搭建一个灵活可扩展的平台,通过依赖注入我们只需要使用简单的配置,而不需要任何代码就可以指定目标需要的资源,完成业务逻辑,而不需要关心具体的资源来自何处,由谁实现的.

      IOC--控制反转的通俗解释:

        所谓的IOC,对于spring框架来说,就是由spring来负责控制对象的生命周期和对象间的关系,所有的类都会在spring容器中登记,告诉spring你是个什么东西,你需要什么东西,然后spring会在系统运行到适当的时候,把你要的东西给你,同时也把你交给其他需要你的东西,所有的类的创建,销毁都是由spring来控制,也就是说控制对象的生命周期不再是引用它的对象,而是spring,对于某个具体的对象而言,以前是它控制其他对象,而现在所有的对象都由spring控制,所以这就叫控制反转.

      DI--依赖注入的通俗理解:

        如果程序中A需要依赖B才能正常进行,而这时候B不是自己创建的而是由spring容器注入给A的,spring会在适当的时候创建B,然后像打针一样注入给A,所以依赖注入的名字就是这么来的.那么DI是如何实现的呢?Java 1.3之后一个重要的特征就是反射(reflection),它允许程序在运行的时候动态的生成对象,执行对象的方法,改变对象的属性,spring就是通过反射来注入的.

      谁依赖了谁?当然是应用程序依赖于IOC容器;

      为什么需要依赖?应用程序需要IOC容器来提供对象需要的外部资源;

      谁注入谁?IOC容器注入应用程序某个对象,应用程序依赖的对象;

      注入了什么?注入某个对象所需要的外部资源(包括对象,资源,常亮数据);

      IOC和DI有什么关系?

        其实它们是同一个概念的不同角度的描述.

  • 相关阅读:
    设计模式的原则
    命令模式
    访问者模式
    策略模式
    外观模式
    组合模式
    原型模式
    合并有序数组
    判断二叉树是否对称
    中序遍历二叉树
  • 原文地址:https://www.cnblogs.com/wk-missQ1/p/12547397.html
Copyright © 2020-2023  润新知