zoukankan      html  css  js  c++  java
  • AddTransient、AddSingleton、AddScoped的区别

    权重:

    AddSingleton→AddTransient→AddScoped

    AddSingleton的生命周期:

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

    AddScoped的生命周期:

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

    AddTransient的生命周期:

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

    控制器

     [HttpGet]
            public IActionResult SetTest()
            {
                sing.Age = 18;
                sing.Name = "小红";
    
                tran.Age = 19;
                tran.Name = "小明";
    
                scon.Age = 20;
                scon.Name = "小蓝";
    
                aService.RedisTest();
    
                return Json("OK");
            }
    

      注入

     public static void AddTestTran(this IServiceCollection service) {
                service.AddTransient<ITranTest, TranTest>();
                service.AddSingleton<ISingTest, SingTest>();
                service.AddScoped<ISconTest, SconTest>();
                service.AddScoped<IAService, AService>();
            }
    

      服务:

    public class AService: IAService
        {
            private ISingTest sing; ITranTest tran; ISconTest scon;
            public AService(ISingTest sing, ITranTest tran, ISconTest scon)
            {
                this.sing = sing;
                this.tran = tran;
                this.scon = scon;
            }
            public void RedisTest()
            {
    
            }
        }
    

      

    AddSingleton的对象没有变

    AddScoped的对象没有变化

    AddTransient的对象发生变化

    ------------------------------------------------------------

    请求get

    AddSingleton的对象没有变

    AddScoped的对象发生变化

    AddTransient的对象发生变化

    注意:

    由于AddScoped对象是在请求的时候创建的

    所以不能在AddSingleton对象中使用

    甚至也不能在AddTransient对象中使用

    所以权重为

    AddSingleton→AddTransient→AddScoped

    不然则会抛如下异常

  • 相关阅读:
    原生JavaScript封装insertAfter方法
    SQL截取最后一个由字符分隔的字符串
    给标识列显示的添加数据(IDENTITY_INSERT 为 ON)
    C#保留两位小数,四舍五入的函数及使用方法
    UEditor1.4.3上传图片提示上传失败
    SQL Server 2005公用表表达式(CTE)
    UEditor 粘贴表格时报错导致无法粘贴的解决方法
    事件监听机制
    数组中的趣味题(一)
    redis的工具类封装
  • 原文地址:https://www.cnblogs.com/AnAng/p/9370913.html
Copyright © 2011-2022 走看看