如果未显式定义,则 aspnetcore 中服务的默认生存期是什么?



我了解 3 个主要生命周期:

  1. 单身 人士
  2. 范围
  3. 短暂的

但是,如果没有明确定义,我似乎找不到说明默认生存期的文档。

默认情况下,注册类型的生存期是瞬态的,即每次注入对象类型时都会创建一个新实例。

有关注射寿命的文档在这里...

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

短暂的

每次请求临时生存期服务时都会创建这些服务。 此生存期最适合轻量级无状态服务。

范围

每个请求创建一次作用域生存期服务。

单身 人士

单一实例生存期服务在首次创建时创建 请求(或者在运行配置服务时,如果您指定了实例 那里),然后每个后续请求将使用相同的实例

ASPNetcore 的服务注册要求您使用

诸如
services.AddTransient<IEmailSender, AuthMessageSender>();
services.AddScoped<IRoleHelper, PermissionRoleHelper>();
services.AddSingleton<IPermissionHelper, ApplicationPermissions>();

第三方注入框架(如 AutoFAC)会将对象注册为瞬态,而无需显式定义对象的备用生存期范围。

最新更新