简单理解.net 依赖注入的三种方式
前言 :.NET5.0 于2020年11月10日正式发布,它是3.1之后的 .NET Core 的下一个主要版本。微软将这个新版本命名为 .NET 5.0 而不是 .NET Core 4.0,其原因有两个:
1、跳过了版本号4.x,以避免与 .NET Framework 4.x 混淆。
2、从名称中删除了“ Core”,以强调这是.NET未来的主要实现。与 .NET Core 或 .NET Framework 相比,.NET 5.0 支持更多类型的应用程序和平台。
ASP.NET Core 5.0 基于 .NET 5.0,但保留名称“ Core”以避免将其与 ASP.NET MVC 5 混淆。同样,Entity Framework Core 5.0保留名称“ Core”以避免将其与 Entity Framework5、Entity Framework6 混淆。
微软称将来只会有一个.NET平台,使用它可以开发 Windows、Linux、macOS、iOS、Android、tvOS、watchOS和WebAssembly等平台的应用。.NET 5中引入了新的.NET API,运行时和语言功能。
众所周知,.net有自带的3种注入的方式,分别是AddScoped、AddSingleton、AddTransient,他们分别是请求内的,单例的,瞬时的作用,那么,究竟到底是什么意思呢,我这里做了一个简单的测试。
定义了如下测试类



然后首先测试一下AddScoped,要将第二个注释放开模拟同一个请求,然后我们每次请求Index,都会发现打印的是1,2,因为我请求了3次,所以会出现3次1,2


然后接着测试Singleton,同样将services.AddScoped<TestSvc>()改为 services.AddSingleton<TestSvc>(),因为是单例的,所以我们应该可以看到那个局部临时变量i已经不会自动释放了,会一直存在内存中并且累加,就类似变成了静态变量


最后测试AddTransient,改为 services.AddTransient<TestSvc>();每次请求都会从新实例,如下:


总结:
AddTransient:每次请求都会从new一个新对象;
Singleton:程序启动后对象就一直存在了,所以需要考虑线程安全问题
Scoped:在同一次请求内共用同一个对象,不同的请求不共用,也应该根据实际考虑线程安全问题
个人网站:http://www.ttblog.site/
简单理解.net 依赖注入的三种方式的更多相关文章
- ASP.NET MVC中使用Unity进行依赖注入的三种方式
在ASP.NET MVC中使用Unity进行依赖注入的三种方式 2013-12-15 21:07 by 小白哥哥, 146 阅读, 0 评论, 收藏, 编辑 在ASP.NET MVC4中,为了在解开C ...
- SSH深度历险记(八) 剖析SSH核心原则+Spring依赖注入的三种方式
于java发育.一类程序猿必须依靠类的其他方法,它是通常new依赖类的方法,然后调用类的实例,这样的发展问题new良好的班统一管理的例子.spring提出了依赖注入的思想,即依赖类不由程 ...
- SSH深度历险(八) 剖析SSH核心原理+Spring依赖注入的三种方式
在java开发中,程序员在某个类中需要依赖其它类的方法,则通常是new一个依赖类再调用类实例的方法,这种开发存在的问题是new的类实例不好统一管理,spring提出了依赖注入的思想,即依 ...
- Spring注解依赖注入的三种方式的优缺点以及优先选择
当我们在使用依赖注入的时候,通常有三种方式: 1.通过构造器来注入: 2.通过setter方法来注入: 3.通过filed变量来注入: 那么他们有什么区别吗?应该选择哪种方式更好? 三种方式的区别小结 ...
- spring4之依赖注入的三种方式
1.Setter注入 <bean id="helloWorld" class="com.jdw.spring.beans.HelloWorld"> ...
- 在ASP.NET MVC中使用Unity进行依赖注入的三种方式
在ASP.NET MVC4中,为了在解开Controller和Model的耦合,我们通常需要在Controller激活系统中引入IoC,用于处理用户请求的 Controller,让Controller ...
- Spring依赖注入的三种方式
看过几篇关于Spring依赖注入的文章,自己简单总结了一下,大概有三种方式: 1.自动装配 通过配置applicationContext.xml中的标签的default-autowire属性,或者标签 ...
- Spring基础05——Spring依赖注入的三种方式
Spring支持3种依赖注入的方式:属性注入.构造器注入.工厂 1.属性注入 属性注入即通过setter方法注入Bean的属性或依赖的对象.使用<property>元素,使用name属性指 ...
- spring——依赖注入的三种方式
1 构造器注入(与构造器有直接关系) 默认无参构造 3种构造方式:通过<contructor-arg>调用类中的构造器 下标 <bean id="userService&q ...
- sping_依赖注入的三种方式
1. set注入:通过setxxx()给属性赋值 <!--id是对象--> <!--class是类--> <bean id = "student" ...
随机推荐
- 【论文阅读】TRO 2021: Fail-Safe Motion Planning for Online Verification of Autonomous Vehicles Using Convex Optimization
参考与前言 Last edited time: August 3, 2022 10:04 AM Status: Reading Type: TRO Year: 2021 论文链接:https://ie ...
- EC热键问题
EC热键问题 ec 问题描述 ACPI事件监控 按键监控 UDEV事件监控 kprobe探测 初步总结热键功能流程 调试记录 PS2 问题描述 系统无触摸板打开和关闭的提示 已知热键功能 快捷键 功能 ...
- vol2以及mimikatz插件安装教程
volatility2安装 https://github.com/volatilityfoundation/volatility git clone https://github.com/volati ...
- Codeforces Round 935 (Div. 3)
A. Setting up Camp 题目描述 The organizing committee plans to take the participants of the Olympiad on a ...
- 谈谈你对 keep-alive 的了解?
在做电商有关的项目中,当我们第一次进入列表页需要请求一下数据,当我从列表页进入详情页,详情页不缓存也需要请求下数据,然后返回列表页,这时候我们使用keep-alive来缓存组件,防止二次渲染,这样会大 ...
- 深度学习pytorch常用操作以及流程
在微信公众号上看到这篇文章,担心以后想找的时候迷路,所以记录到了自己的博客上,侵扰致歉,随时联系可删除. 1.基本张量操作 1. 1 创建张量 介绍: torch.tensor() 是 PyTorch ...
- js 异步 任务 题目解析(chatgpt bug了?)
最近遇到一道题如下,求输出结果 感觉还是蛮有意思的,找chatgpt做了一下 我是题 async function async1(){ console.log('1'); await async2() ...
- jQuery 插件autocomplete 应用
项目中有时会用到自动补全查询,就像Google搜索框.淘宝商品搜索功能,输入汉字或字母,则以该汉字或字母开头的相关条目会显示出来供用户选择, autocomplete插件就是完成这样的功能. auto ...
- Mysql-explain之Using temporary和Using filesort解决方案
第一条语句 explainselect * from tb_wm_shop where is_delete != 1 and is_authentication = 1 ORDER BY create ...
- Git 克隆仓库报unable to get local issuer certificate错误解决方法
Git 克隆仓库报unable to get local issuer certificate错误解决方法 By:授客 QQ:1033553122 问题描述 克隆gitlab上的仓库,报错,如下 $ ...