asp.net core2.0 依賴注入 AddTransient與AddScoped的區別


asp.net core主要提供了三種依賴注入的方式

其中AddTransient與AddSingleton比較好區別

AddTransient瞬時模式:每次都獲取一個新的實例

AddSingleton單例模式:每次都獲取同一個實例

 

而AddTransient與AddScoped的區別更不容易區別一點

首先這兩種方式每次請求得到的都不是同一個對象,從這點看會發現這兩個都一樣。

但是我們可以繼續分細一點,雖然不同的請求得到的結果不同,但是我們可以在同一次請求中去獲取多次實例測試。

 


AddTransient注入方式獲取兩次實例

  1. services.AddTransient<IUserBLL, UserBll>();

 這里重新獲取一個實例糾錯寫法:

  IUserBLL aaa=(IUserBLL )HttpContext.RequestServices.GetService(typeof(IUserBLL ));

可以看到瞬時模式即使同一次請求中也是不同的對象

 

 

AddScoped注入方式獲取兩次實例

  1. services.AddScoped<IUserBLL, UserBll>();

可以發現AddScoped在同一次請求中,獲取多次對象得到的是同一個對象

 

小結:

AddTransient瞬時模式:每次請求,都獲取一個新的實例。即使同一個請求獲取多次也會是不同的實例

AddScoped:每次請求,都獲取一個新的實例。同一個請求獲取多次會得到相同的實例

AddSingleton單例模式:每次都獲取同一個實例


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM