如果没有明确定义,aspnetcore中服务的默认生命周期是多少?

时间:2018-03-21 00:14:35

标签: .net asp.net-core-mvc

我理解3个主要的生命周期:

  1. 的Singleton
  2. 作用域
  3. 瞬态
  4. 但是,如果没有明确定义,我似乎无法找到说明默认生命周期的文档。

1 个答案:

答案 0 :(得分:2)

默认情况下,注册类型的生命周期为Transient,即每次注入对象类型时都会创建一个新实例。

注射寿命的文件在这里......

https://docs.microsoft.com/en-us/aspnet/core/fundamentals/dependency-injection#service-lifetimes-and-registration-options

  

瞬态

     

每次请求时都会创建瞬态生命周期服务。   这种生命周期最适合轻量级无状态服务。

     

作用域

     

每个请求都会创建一次范围生命周期服务。

     

的Singleton

     

Singleton终身服务是在他们第一次创建时创建的   请求(或者在指定实例时运行ConfigureServices时)   那里)然后每个后续请求将使用相同的实例

aspnetcore的服务注册要求您使用诸如

之类的方法明确定义生命周期
services.AddTransient<IEmailSender, AuthMessageSender>();
services.AddScoped<IRoleHelper, PermissionRoleHelper>();
services.AddSingleton<IPermissionHelper, ApplicationPermissions>();

第三方注入框架(如autofac)会将对象注册为瞬态,而无需为对象明确定义备用生命周期范围。