程序开始运行时,就要注册服务,管理服务,以便提供服务
将一系列创建流程打包成服务,交给容器来管理
三种生命周期:
1.瞬态,每个请求都创建一个新对象
2.范围:限定几个请求使用同一个对象,超过则创建新对象, .net core默认一次http请求中后端所有请求都使用一个对象
3.单例:全局共享一个对象
这三种生命周期分别应用在什么场景下
注意容器中服务的服务类型和实现类型
推荐服务类型用接口类型
服务定位器和依赖注入的区别
获得想要的对象
服务定位器:通过调用方法
依赖注入:通过属性说明
1 using Microsoft.Extensions.DependencyInjection; 2 ServiceCollection services = new ServiceCollection();//创建用于注册服务的容器 3 services.AddTransient<TestServiceImpl>();//注册服务 4 using (ServiceProvider sp = services.BuildServiceProvider())//通过调用方法,获得容器服务提供者,这也是服务定位器方式 5 {//为什么这里需要手动释放资源 6 TestServiceImpl testService = sp.GetRequiredService<TestServiceImpl>();//通过调用方法,获得想要的对象 7 testService.Name = "tom"; 8 testService.SayHi(); 9 }
推荐使用注入接口服务,可以尝试注入实现服务
本质就是我们不需要自己取new 一个实例,将这个任务工作交给容器, 暂时觉得很鸡肋
一个接口,一个实现类, 一个控制器
标签:容器,定位器,依赖,服务,对象,testService,注入 From: https://www.cnblogs.com/cat-cat/p/18217093