asp.net core主要提供了三種依賴注入的方式
其中AddTransient與AddSingleton比較好區別
AddTransient瞬時模式:每次都獲取一個新的實例
AddSingleton單例模式:每次都獲取同一個實例
而AddTransient與AddScoped的區別更不容易區別一點
首先這兩種方式每次請求得到的都不是同一個對象,從這點看會發現這兩個都一樣。
但是我們可以繼續分細一點,雖然不同的請求得到的結果不同,但是我們可以在同一次請求中去獲取多次實例測試。
AddTransient注入方式獲取兩次實例
- services.AddTransient<IUserBLL, UserBll>();

這里重新獲取一個實例糾錯寫法:
IUserBLL aaa=(IUserBLL )HttpContext.RequestServices.GetService(typeof(IUserBLL ));
可以看到瞬時模式即使同一次請求中也是不同的對象

AddScoped注入方式獲取兩次實例
- services.AddScoped<IUserBLL, UserBll>();
可以發現AddScoped在同一次請求中,獲取多次對象得到的是同一個對象

小結:
AddTransient瞬時模式:每次請求,都獲取一個新的實例。即使同一個請求獲取多次也會是不同的實例
AddScoped:每次請求,都獲取一個新的實例。同一個請求獲取多次會得到相同的實例
AddSingleton單例模式:每次都獲取同一個實例
