简单理解.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" ...
随机推荐
- 扫描版PDF目录制作指南
目前网上找到的扫描版的电子书往往没有目录,这使得阅读变得非常困难.本文总结我的经验,介绍快速制作扫描版 PDF 目录的方法,以便更轻松地阅读扫描版电子书. 本文首先介绍手动制作目录的方法,之后介绍如何 ...
- NAT类型检测方案
一.NAT分类 NAT大致有4种类型: 1. Full Cone NAT 完全锥形NAT,所有从同一个内网IP和端口号发送过来的请求都会被映射成同一个外网IP和端口号,并且任何一个外网主机都可以通过这 ...
- package-lock.json 文件
今天有同事找到我说,本地js 编译不过,编译不过的代码如下 const host = window?.location?.host || 'localhost'; 是option chaining, ...
- 用StabilityMatrix一键安装Stable Diffusion
Stable Diffusion是2022年发布的深度学习文字到图像生成模型,它既能免费使用,又能部署在本地端,又有非常多的模型可以直接套用,在使用体验上比Midjourney和DALL-E更加强大. ...
- SurveillanceStation破解版 SurveillanceStation-x86_64-8.2.2-5766
直接手动安装好套件,许可就是65535.安装的时候提示套件损坏,不理继续安装.不过这个版本有时间炸弹问题,使用几个小时后会出现摄像机消失问题,显示摄像机被删除,但是配置其实是在的.只要禁用套件再启用一 ...
- 部分解决 | ocrmypdf对中文pdf进行ocr识别后存在多余空格
1.问题 ocrmypdf安装采用的是在windows安装方法具体看 https://media.readthedocs.org/pdf/ocrmypdf/latest/ocrmypdf.pdf 由于 ...
- [rCore学习笔记 03]配置rCore开发环境
写在前面 本随笔是非常菜的菜鸡写的.如有问题请及时提出. 可以联系:1160712160@qq.com GitHhub:https://github.com/WindDevil (目前啥也没有 rCo ...
- .Net Core MemoryCache 缓存
缓存是一种开发时常用的性能优化手段,.Net自带内存缓存(MemoryCache)可以很方便的使用,下面列出简单用法. 首先通过NuGet添加 Microsoft.Extensions.Hosting ...
- vscode 调试 nodejs 程序
nodejs 服务在vscode 中的调试 1.安装vscode 略(这不用说了吧) 2.写一个能跑的nodejs 程序 其实看到这个,自己已经有一个能跑的nodejs 程序,不用看我的了 我这里是我 ...
- 周末玩一下云技术,kvm 相关笔记
由于需要将企业的很贵的显卡和主机装在一个虚拟主机,用来跑 ue5 和 sd3 用来给用户临时使用,但是怎么将主机虚拟出来成多个主机呢,自己没有有钱请不起人,只能自己学一下虚拟化技术,第一步主机开启 ...