当前位置: 首页 > 面试题库 >

请问什么是IoC和DI?并且简要说明一下DI是如何实现的?

郎项禹
2023-03-14
本文向大家介绍请问什么是IoC和DI?并且简要说明一下DI是如何实现的?相关面试题,主要包含被问及请问什么是IoC和DI?并且简要说明一下DI是如何实现的?时的应答技巧和注意事项,需要的朋友参考一下

考察点:控制反转

参考回答:

IoC叫控制反转,是Inversion of Control的缩写,DI(Dependency Injection)叫依赖注入,是对IoC更简单的诠释。控制反转是把传统上由程序代码直接操控的对象的调用权交给容器,通过容器来实现对象组件的装配和管理。所谓的"控制反转"就是对组件对象控制权的转移,从程序代码本身转移到了外部容器,由容器来创建对象并管理对象之间的依赖关系。IoC体现了好莱坞原则 - "Don’t call me, we will call you"。依赖注入的基本原则是应用html" target="_blank">组件不应该负责查找资源或者其他依赖的协作对象。配置对象的工作应该由容器负责,查找资源的逻辑应该从应用组件的代码中抽取出来,交给容器来完成。DI是对IoC更准确的描述,即组件之间的依赖关系由容器在运行期决定,形象的来说,即由容器动态的将某种依赖关系注入到组件之中。

一个类A需要用到接口B中的方法,那么就需要为类A和接口B建立关联或依赖关系,最原始的方法是在类A中创建一个接口B的实现类C的实例,但这种方法需要开发人员自行维护二者的依赖关系,也就是说当依赖关系发生变动的时候需要修改代码并重新构建整个系统。如果通过一个容器来管理这些对象以及对象的依赖关系,则只需要在类A中定义好用于关联接口B的方法(构造器或setter方法),将类A和接口B的实现类C放入容器中,通过对容器的配置来实现二者的关联。 依赖注入可以通过setter方法注入(设值注入)、构造器注入和接口注入三种方式来实现,Spring支持setter注入和构造器注入,通常使用构造器注入来注入必须的依赖关系,对于可选的依赖关系,则setter注入是更好的选择,setter注入需要类提供无参构造器或者无参的静态工厂方法来创建对象。

 类似资料:
  • 本文向大家介绍请简要说明一下IOC和AOP是什么?相关面试题,主要包含被问及请简要说明一下IOC和AOP是什么?时的应答技巧和注意事项,需要的朋友参考一下 考察点:spring 参考回答: 依赖注入的三种方式:(1)接口注入(2)Construct注入(3)Setter注入 控制反转(IoC)与依赖注入(DI)是同一个概念,引入IOC的目的:(1)脱开、降低类之间的耦合;(2)倡导面向接口编程、实

  • 本文向大家介绍请说明一下springIOC原理是什么?如果你要实现IOC需要怎么做?请简单描述一下实现步骤?相关面试题,主要包含被问及请说明一下springIOC原理是什么?如果你要实现IOC需要怎么做?请简单描述一下实现步骤?时的应答技巧和注意事项,需要的朋友参考一下 考察点:spring 参考回答: ①IoC(Inversion of Control,控制倒转)。这是spring的核心,贯穿始

  • 本文向大家介绍请简单说明一下什么是迭代器?相关面试题,主要包含被问及请简单说明一下什么是迭代器?时的应答技巧和注意事项,需要的朋友参考一下 考察点:JAVA迭代器 Iterator提供了统一遍历操作集合元素的统一接口, Collection接口实现Iterable接口, 每个集合都通过实现Iterable接口中iterator()方法返回Iterator接口的实例, 然后对集合的元素进行迭代操作.

  • 本文向大家介绍请简要说明一下JAVA中cyclicbarrier和countdownlatch的区别分别是什么?相关面试题,主要包含被问及请简要说明一下JAVA中cyclicbarrier和countdownlatch的区别分别是什么?时的应答技巧和注意事项,需要的朋友参考一下 考察点:线程 CountDownLatch和CyclicBarrier都能够实现线程之间的等待,只不过它们侧重点不同:

  • 本文向大家介绍请说明一下锁机制的作用是什么?并且简述一下Hibernate的悲观锁和乐观锁机制是什么?相关面试题,主要包含被问及请说明一下锁机制的作用是什么?并且简述一下Hibernate的悲观锁和乐观锁机制是什么?时的应答技巧和注意事项,需要的朋友参考一下 考察点:锁 参考回答: 有些业务逻辑在执行过程中要求对数据进行排他性的访问,于是需要通过一些机制保证在此过程中数据被锁住不会被外界修改,这就

  • 本文向大家介绍请说明一下@Controller和@RestController的区别是什么?相关面试题,主要包含被问及请说明一下@Controller和@RestController的区别是什么?时的应答技巧和注意事项,需要的朋友参考一下 考察点:spring 参考回答: @RestController注解相当于@ResponseBody + @Controller合在一起的作用