首页 > 其他分享 >ioc

ioc

时间:2023-11-19 11:33:29浏览次数:22  
标签:构造 实例 注册 net ioc 构造函数

1 为什么需要使用ioc

细节还会依赖细节。

使用ioc的话,以三层架构为例,当数据访问层(dal)层改变后,业务逻辑层(bll)也得改,甚至表示层(ui)也要改,使用ioc后dal层的改变不会影响其它层

自动注入(通过反射):如果1个对象的构造函数参数有多个,每个参数的构造函数又依赖其他参数,你需要写一大堆得代码来构造这个对象实例,有自动注入就不用了。

通过ioc可以轻松替换框架的默认实现,后注册覆盖前注册的,易于框架升级扩展。

Ioc是一种设计实现,Di是ioc的实现手段。

2 实现

 

实现遇到的问题:

 

相关问题:

 

1 有依赖关系-通过递归方法构造实例。

 

2 循环依赖:.net 自带的di会报错。

 

3 一个接口多个实现:一般来讲,后注册的会覆盖前注册的,可以通过注册一个工厂,然后通过工厂实例里面的方法构造相关类型的实例。

 

4 构造方法参数是基本类型,.net 可以扩展注册方法,然后在注册时通过resolve传入基本参数值

 

5 属性注入和方法注入:

 

 3 .net core 自带的 di 构造函数选择

在所有合法的候选构造函数列表中,最终被选择出来的构造函数具有这么一个特征:每一个候选构造函数的参数类型集合都是这个构造函数参数类型集合的子集。如果这样的构造函数并不存在,一个类型为InvalidOperationException的异常会被跑出来。

 

参考链接

https://www.cnblogs.com/linybo/p/10053359.html

 

标签:构造,实例,注册,net,ioc,构造函数
From: https://www.cnblogs.com/tomorrow0/p/16220334.html

相关文章

  • Spring5学习随笔-IOC(反转控制)、DI(依赖注入)和创建复杂对象
    学习视频:【孙哥说Spring5:从设计模式到基本应用到应用级底层分析,一次深入浅出的Spring全探索。学不会Spring?只因你未遇见孙哥】第七章、反转控制与依赖注入1.反转(转移)控制(IOCinverseofControl)控制:对于成员变量赋值的控制权反转控制:把对于成员变量赋值的控制权,从代码......
  • 常见面试题-Spring的aop和ioc如何实现?
    Spring的aop和ioc怎么实现?Spring的IOC是如何实现的呢?Spring的IOC是通过工厂+反射去实现的,在IOC中,Spring会将创建的Bean都放在工厂中,我们可以通过@Configuration来定义配置类,在配置类中通过@Bean来将Bean创建在Bean工厂中,在对Bean进行实例化时,使用的......
  • nodejs 一些不错的ioc 框架
    nodejs周边一些ioc框架还是不少的,以下整理一些,而且不少有以前简单介绍过说明目前InversifyJS,awilix还不错基本都还在维护以及迭代中,typedi以及tsyringe似乎缺少维护了injex属于一个比较新的ioc项目,目前看使用还是比较简洁的,比较类似java的guice框架,实际上ioc框架特别多......
  • 浅析Spring IoC源码(八)了解BeanFactoryAware
    这一节我们还是先了解一下BeanFactoryAware这个接口,之所以说只是了解一下,还是希望等到分析refresh()的时候有个更好的理解吧照旧先上源代码:官方解释:实现这个接口的bean其实是希望知道自己属于哪一个beanfactory言简意赅,不需要做多解释,先实现一下自己,看看他的基本功能吧,看代码:MyBean......
  • 浅析Spring IoC源码(七)浅谈BeanFactory和FactoryBean
    这一节我们就简单的介绍一下FactoryBean,知道这个接口的作用和意义,方便我们refresh()这个方法的理解照旧,我们依旧先看源码,从源码中查看一下他的作用吧~这次就不一句句翻译了(太多了),还是稍微大概的讲一下意思吧:FactoryBean是一个接口,任何一个Bean可以实现这个接口,那么这个bean将成为一......
  • Spring系列:基于XML的方式构建IOC
    目录一、搭建模块spring6-ioc-xml二、获取bean的三种方式三、基于setter注入四、基于构造器注入五、特殊值处理六、为对象类型属性赋值七、引入外部属性文件八、基于XML自动装配一、搭建模块spring6-ioc-xml①引入配置文件引入spring6-ioc-xml模块配置文件:beans.xml、log4j2.xm......
  • 渗透中 PoC、Exp、Payload、RCE、IOC,Shellcode 的区别
    PoC:全称“ProofofConcept”,中文“概念验证”,常指段漏洞证明的代码。Exp:全称“Exploit”,中文“利用”,指利用系统漏洞进行攻击的动作作。Payload:中文“有效载荷”,指成功exploit之后,真正在目标系统执行的代码或指令RCE:RCE(remotecommand/codeexecute)可以让攻击......
  • Spring概述,IOC,AOP使用
    Spring简介Spring概述官网地址:https://spring.io/Spring是最受欢迎的企业级Java应用程序开发框架,数以百万的来自世界各地的开发人员使用Spring框架来创建性能好、易于测试、可重用的代码。Spring框架是一个开源的Java平台,它最初是由RodJohnson编写的,并且于2003年6月......
  • 手把手教你写一个 IOC 容器
    一、介绍1、介绍最近无聊,也没什么事做,没事做总是要给自己找点事情做吧,毕竟人的生活在与折腾。于是,决定自己手动写一个IOC的框架。我们知道在NetCore的版本里面已经内置了IOC容器,它就是ServiceCollection,一般情况下,该容器还是够用的,但是有时候还......
  • Spring,IOC创建对象的方式,无参有参
    创建一个spring模块,创建有无参构造的User实体类  方式一、无参构造创建对象  (默认的)我们知道:创建对象是调用了实体类中的构造方法的Spring这边通过配置文件也是默认调用了无参构造 二、有参构造创建对象用法1、通过下标赋值  index=“0” 因为User中就一个nam......