首页 > 其他分享 >2 服务的生命周期

2 服务的生命周期

时间:2022-12-26 22:45:37浏览次数:51  
标签:容器 生命周期 服务 创建 实例 services

服务的生命周期

单例:

服务只被实例化一次,后面所有的请求都只用这一个创建好的实例,需要注意多线程问题;

也就是这个服务里面的东西最好不要存在外部的变量, 这样每个实例都可能会修改它,而且修改的时候这个值可能已经发生了改变,需要加锁;

内部的变量则无所谓;

services.AddSingleton<IProductService, ProductService>();

作用域

每次请求服务都会被创建一次,然后这个实例化的对象,在后面整个的中间件和Controller 中被反复使用;

比如EF Context

services.AddScoped<IProductService, ProductService>();

瞬时

每次请求都会被创建一次,甚至是

services.AddTransient<IProductService, ProductService>();

服务生命周期

服务释放

容器为其创建的 IDisposable 类型调用 Dispose。 从容器中解析的服务绝对不应由开发人员释放。 如果类型或工厂注册为单一实例,则容器自动释放单一实例

标签:容器,生命周期,服务,创建,实例,services
From: https://www.cnblogs.com/maanshancss/p/56619f612132a9f43e14b7acc4e2589a.html

相关文章