依赖注入

程序开始运行时,就要注册服务,管理服务,以便提供服务

将一系列创建流程打包成服务,交给容器来管理
三种生命周期:
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 一个实例,将这个任务工作交给容器, 暂时觉得很鸡肋
一个接口,一个实现类, 一个控制器

 

 

 

二:大部分服务都可以使用构造方法,特殊服务(使用次数少,且十分占资源)可以不通过构造方法
这种特殊服务,控制器中哪个方法使用就在这个方法中调用服务

 

posted @ 2024-05-28 10:03  爱晒太阳的懒猫。。  阅读(1)  评论(0编辑  收藏  举报