區別:
- AddTransient 每次service請求都是獲得不同的實例,暫時性模式:暫時性對象始終不同,無論是不是同一個請求(同一個請求里的不同服務)同一個客戶端,每次都是創建新的實例
- AddScoped 對於同一個請求返回同一個實例,不同的請求返回不同的實例,作用域模式:作用域對象在一個客戶端請求中是相同的,但在多個客戶端請求中是不同的
- AddSingleton 每次都是獲得同一個實例, 單一實例模式:單一實例對象對每個對象和每個請求都是相同的,可以說是不同客戶端不同請求都是相同的
說明:
AddSingleton的生命周期:
項目啟動-項目關閉 相當於靜態類 只會有一個
AddScoped的生命周期:
請求開始-請求結束 在這次請求中獲取的對象都是同一個
AddTransient的生命周期:
請求獲取-(GC回收-主動釋放) 每一次獲取的對象都不是同一個
由於AddScoped對象是在請求的時候創建的,所以不能在AddSingleton對象中使用,甚至也不能在AddTransient對象中使用