首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >IoC和DI的特性

IoC和DI的特性
EN

Stack Overflow用户
提问于 2014-02-18 00:09:45
回答 1查看 223关注 0票数 0

我是asp.net mvc的初学者。我有一个问题,我相信任何人都会在堆栈溢出方面帮助我)我无法理解在ASP.NET MVC中使用ASP.NET和DI是什么。你能帮帮我吗。也许我很笨,但我真的很想知道)有人能解释清楚吗?我将非常感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-18 00:29:02

特别是对于ASP.NET MVC,控制器有很多依赖项,DI和IoC容器可以通过接口将它们解耦,使它们可以用于单元测试,也更容易随着时间的推移而改变,而不会影响控制器。

例如,如果控制器依赖于日志记录提供程序、自定义配置提供程序和一两个域服务(它们本身依赖于数据管理器和可能的其他依赖项),那么如何对控制器进行单元测试--其中有这么多外部依赖项?

实现这一目标的方法是使其依赖项(即DI)和注入的依赖项使用配置问题(即IoC容器)。

考虑以下构造函数..。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public MyController()
{
    _logger = new Logger();
    _configProvider = new ConfigProvider();
    _customerService = new CustomerService();
    _orderService = new OrderService();
}

...versus...

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public MyController(ILogger logger, IConfigProvider configProvider, ICustomerService customerService, IOrderService orderService)
{
    _logger = logger;
    _configProvider = configProvider;
    _customerService = customerService;
    _orderService = orderService;
}

.,它允许注入依赖项(例如单元测试中的模拟),可以使用IoC容器进行配置驱动。

从可测试性和可维护性的角度来看,这种差异是日夜的。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21847644

复制
相关文章
spring的IOC和DI
Ioc—Inversion of Control,即“控制反转”,是一种设计思想。而Spring IOC是应用了该设计思想,能过IOC容器来间接管理bean。
逍遥壮士
2020/09/18
6770
浅析IOC 和 DI
  学习过spring框架的人一定都会听过Spring的IoC(控制反转) 、DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC 、DI这两个概念是模糊不清的,是很难理解的,今天和大家分享网上的一些技术大牛们对Spring框架的IOC的理解以及谈谈我对Spring Ioc的理解。
Kevin_Zhang
2021/06/10
1.1K0
快速学习-IOC和DI
在应用程序中的组件需要获取资源时,传统的方式是组件主动的从容器中获取所需要的资源,在这样的模式下开发人员往往需要知道在具体容器中特定资源的获取方式,增加了学习成本,同时降低了开发效率。 反转控制的思想完全颠覆了应用程序组件获取资源的传统方式:反转了资源的获取方向——改由容器主动的将资源推送给需要的组件,开发人员不需要知道容器是如何创建资源对象的,只需要提供接收资源的方式即可,极大的降低了学习成本,提高了开发的效率。这种行为也称为查找的被动形式。
cwl_java
2020/02/12
3060
什么是IoC和DI?DI是如何实现的?
IoC叫控制反转,是Inversion of Control的缩写,DI(Dependency Injection)叫依赖注入,是对IoC更简单的诠释。控制反转是把传统上由程序代码直接操控的对象的调用权交给容器,通过容器来实现对象组件的装配和管理。所谓的”控制反转”就是对组件对象控制权的转移,从程序代码本身转移到了外部容器,由容器来创建对象并管理对象之间的依赖关系。IoC体现了好莱坞原则 – “Don’t call me, we will call you”。依赖注入的基本原则是应用组件不应该负责查找资源或者其他依赖的协作对象。配置对象的工作应该由容器负责,查找资源的逻辑应该从应用组件的代码中抽取出来,交给容器来完成。DI是对IoC更准确的描述,即组件之间的依赖关系由容器在运行期决定,形象的来说,即由容器动态的将某种依赖关系注入到组件之中。
唐怀瑟
2018/08/30
7450
理解Spring中的IoC和DI
在没有IoC之前,我们要在A类中使用B类,就要在A类中new出B类的实例,这样A类和B类之间就出现了耦合。
超超不会飞
2020/09/18
5210
Spring中的IoC和DI介绍
例如:现在使用依赖注入,只需要在service类中声明一个dao对象就行了,在spring配置文件中完成依赖注入就好了,但是需要注意的是,这种方式不仅需要在service类中声明对象,还要写它的(get)set方法,否则spring配置文件会报错。
2020/10/23
3200
Spring中的IoC和DI介绍
Spring IOC,DI的理解
使我们从繁琐的对象交互中解脱出来,更关注对象本身,进一步突出java面向对象的思想
名字是乱打的
2022/05/13
3690
Spring IOC,DI的理解
了不起的 IoC 与 DI
本文阿宝哥将从六个方面入手,全方位带你一起探索面向对象编程中 IoC(控制反转)和 DI(依赖注入) 的设计思想。阅读完本文,你将了解以下内容:
阿宝哥
2020/08/19
2.7K0
spring的ioc实现原理_ioc控制反转和di依赖注入
大家好,我是架构君,一个会写代码吟诗的架构师。今天说一说spring的ioc实现原理_ioc控制反转和di依赖注入,希望能够帮助大家进步!!!
Java架构师必看
2022/07/06
4760
spring的ioc实现原理_ioc控制反转和di依赖注入
IOC&DI探究
业务场景: 在使用Java进行开发业务的过程中,很多时候一个业务是由各种组件组成,在每个使用到这些组件时都会毫不犹豫的new一个组件对象来使用,在小项目中这样的做法无可厚非,也不存在什么问题。但是在业务逻辑复杂并且多人协作开发的项目中,这会导致业务和组件之间的关系错综复杂而且不便于管理,对象之间的耦合度变得很高,这就是所谓的牵一发而动全身吧。 而这个问题在spring中得到了解决,它的核心在于Ioc思想。
HLee
2021/03/17
3740
IOC&DI探究
PHP 依赖注入(DI)和控制反转(IoC)
Ioc 容器维护 binding 数组记录 bind 方法传入的键值对如:log=>FileLog, user=>User
友儿
2022/09/11
6760
使用 IOC 控制反转和 DI 依赖注入的意义
其实我的标题没写对,这个话题我是聊不下去的。 本文只和小伙伴聊聊为什么使用容器注入,优缺点是什么。我通过问问题的方式让小伙伴了解这么做的意义
林德熙
2020/07/28
9210
使用 IOC 控制反转和 DI 依赖注入的意义
QA模式详解Spring核心(一)DI和IOC
本文并非教程一类的文章,而是偏向于Spring底层,适合有一定框架编程经验的同学阅读。在这个系列的文章中,我会融合同学们在面试中常见的问题,如什么是IOC容器,遇到重要的,我可能还会以源代码的形式展现相应的内容,这样一问一答的形式,帮助同学们缕清Spring的重要知识点。由于本人能力有限,在行文的过程中可能会出现一些错误,请各位同学、大佬不吝赐教,共同学习。
roobtyan
2019/02/21
5410
【Spring教程】依赖注入(DI)和控制反转(IoC)
  不管是依赖注入,还是控制反转,其含义完全相同:当某个Java实例(调用者)需要另一个Java实例(被调用者)时,在传统的程序设计过程中,通常由调用者来创建被调用者的实例。   在依赖注入的模式下,创建被调用者的工作不再由调用者来完成,因此成为控制反转;创建被调用者实例的工作通常由Spring容器来完成,然后注入调用者,因此也称为依赖注入。   不管是依赖注入,还是控制反转,都说明了Spring采用动态、灵活的方式来管理各种对象。对象与对象之间的具体实现互相透明。
程序员云帆哥
2022/05/12
2700
【Spring教程】依赖注入(DI)和控制反转(IoC)
面试官问我如何理解 IOC 和 DI
IOC 控制反转的设计模式可以大幅度地降低了程序的耦合性。而 装饰器在 VSCode 的控制反转设计模式里,其主要作用是实现 DI 依赖注入的功能和精简部分重复的写法。由于该步骤实现较为复杂,我们先从简单的例子为切入点去了解装饰器的基本原理。
wscats
2022/05/05
3720
spring之IOC(控制反转)和DI(依赖注入)
IOC:思想是反转资源获取的方向。传统的资源查找方式要求组件向容器发起请求查找资源,作为回应,容器适时的返回资源。而应用了IOC之后,则是容器主动地将资源推送给它所管理的组件。组件所要做的仅仅是选择一种合适的方式来接收资源,这种查找方式也被称为查找的被动形式。
西西嘛呦
2020/08/26
4100
spring之IOC(控制反转)和DI(依赖注入)
对Spring IOC以及DI的理解
Ioc—Inversion of Control,即“控制反转”,不是什么技术,而是一种设计思想。在Java开发中,Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。如何理解好Ioc呢?理解好Ioc的关键是要明确“谁控制谁,控制什么,为何是反转(有反转就应该有正转了),哪些方面反转了”,那我们来深入分析一下:
360linker
2018/11/21
4190
对Spring IOC以及DI的理解
深入理解DIP、IoC、DI以及IoC容器
摘要 面向对象设计(OOD)有助于我们开发出高性能、易扩展以及易复用的程序。其中,OOD有一个重要的思想那就是依赖倒置原则(DIP),并由此引申出IoC、DI以及Ioc容器等概念。通过本文我们将一起学习这些概念,并理清他们之间微妙的关系。 ---- 目录 前言 依赖倒置原则(DIP) 控制反转(IoC) 依赖注入(DI) IoC容器 总结 ---- 前言 对于大部分小菜来说,当听到大牛们高谈DIP、IoC、DI以及IoC容器等名词时,有没有瞬间石化的感觉?其实,这些“高大上”的名词,理解起来也并不是那么的难
刘皓
2018/04/03
1.1K0
深入理解DIP、IoC、DI以及IoC容器
Spring系列三:IoC 与 DI
在软件工程中,控制反转(IoC)是一种设计思想,对象之间耦合在一起,在运行时自动绑定,并且它们编译时对所需要引用的对象是不确定的。在这个spring教程中,通过示例了解ioc和spring中的依赖注入之间的区别。
java干货
2021/02/19
6380
Spring系列三:IoC 与 DI
IOC控制反转 + DI依赖注入
Spring中的IOC一种思想,两种实现方式IOC (Inversion of Control):控制反转,是一种概念和思想,指由Spring容器完成对象创建和依赖注入核心业务:(a)对象的创建 (b)依赖的注入2种实现方式基于xml实现IOC基于注解实现IOC基于xml的IOC在前3篇Spring博客中简单探讨过了,后面将探讨基于注解的IOC基于注解的IOCDI (Dependency Injection):基于注解的IOC被称为DI,即依赖注入, 是IOC思想的一种具体实现方式根据IOC的核心业务即:(
愿天堂没有BUG
2022/09/28
2870

相似问题

Winforms和IoC/DI

21

Ioc和DI的位置和原因

10

什么是豆子,IoC和DI?

11

了解IoC、DI和参考方法

37

IoC和DI -架构和实现示例

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文