详解.NET Core 依赖注入生命周期

前言

.NET Core 自带依赖注入框架,支持三种不同生命周期的注入模式:

  • Singleton 单例模式
  • Scoped 区域模式
  • Transient 瞬时模式

但是常常不知道什么时候使用哪种模式才最合适,接下来我就用代码详细解读一下三种模式

代码示例

首先新建.NET Core API项目来进行代码测试
在这里插入图片描述

分别新建 Scoped、Singleton、Transient 三种模式的服务与接口,里面写一个GetIndex() 方法获取index ,用来区别服务的生命周期。
在这里插入图片描述
三个服务代码都是如此,然后添加依赖注入
在这里插入图片描述
最后在控制器中天加测试方法
在这里插入图片描述

使用 [FromService] 特性注入服务,每次服务注入两次,用来区别服务的变化,输出服务的index,启动项目查看结果
在这里插入图片描述

上图可以看到单例和区域模式下,两次注入的服务index是叠加的,可以说明两次服务注入的都是同一个。而瞬时模式两次注入的服务index都是初始值,也就说明两次服务都是新的。然后我们不停止项目在执行一次方法
在这里插入图片描述
可以看到单列模式和区域模式有了不同,单例模式注入的服务,index值一直在叠加,而区域模式有重新从0开始叠加。

总结

结合以上示例可以清楚的分别三种模式的差别

  • Singleton
    单例模式,服务在第一次请求时被创建,其后的每次请求都沿用这个已创建的服务。

  • Scoped
    作用域模式,服务在每次请求时被创建,整个请求过程中都贯穿使用这个创建的服务。

  • Transient    
    瞬态模式,服务在每次请求时被创建

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

V-BOX

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值