权重:

 

AddSingleton→AddTransient→AddScoped

 

AddSingleton的生命周期:

 

项目启动-项目关闭   相当于静态类  只会有一个  

 

AddScoped的生命周期:

 

请求开始-请求结束  在这次请求中获取的对象都是同一个 

 

AddTransient的生命周期:

 

请求获取-(GC回收-主动释放) 每一次获取的对象都不是同一个

 

这个是结论,而在实际操作中,特别是IConfiguration.GetSection()获取配置信息的时候,它是不是动态的呢?

本篇讨论的就是其注入服务的可配置信息生命周期。

 

根据实验,AddSingleton 只会在第一次加载网站的时候调用我们传入的implementationFactory的Func,即实现服务类的方法。 而当有请求时,并不会再次调用。

 

微信截图_20200102182655.png

 

AddTransient 和 AddScoped 都会在每一次请求来临时重新在implementationFactory 方法中重新创建并返回一个新的实例

所以当很多时候,我们希望去做一个自己的配置文件并且可以动态的传递给服务使用,可以采用AddTransient 和AddScoped

评论

想当第一个评论家吗?

提交评论