1、 Transient(瞬发生命周期)
Transient 生命周期:每次请求都会创建一个新的实例。这对于具有短暂状态的服务是合适的,例如临时计算或数据转换。
services.AddTransient<IMyService, MyService>();
2、 Scoped(区域生命周期)
Scoped生命周期:在同一请求内共享相同的实例。这对于需要在多个组件之间共享数据的服务是合适的,例如数据库上下文。
services.AddScoped<IMyService, MyService>();
3、 Singleton(单例生命周期)
Singleton生命周期:在应用程序的整个生命周期中只存在一个实例。这对于需要在应用程序的不同组件之间共享状态的服务是合适的,例如全局配置或共享缓存。
services.AddSingleton<IMyService, MyService>();
个人总结
Transient(瞬发生命周期): 就是每一次访问都是相当于New了一个新的对象,例如:在A方法调用User类会new 一个新的User,在B方法中同样会new一个新的对象,这两个对象不相等.
Scoped(区域生命周期): 就是在同一次访问中例如访问一个方法,在if中声明的对象,在else中是不能使用的.
Singleton(单例生命周期): 就是在项目运行期间,这个对象只会存在一个,无论在哪调用,调用到的都是一个对象.