什么是依赖注入?
控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。其中最常见的方式叫做依赖注入(Dependency Injection,简称DI),还有一种方式叫“依赖查找”(Dependency Lookup)。是指程序运行时,将所需的对象注入到组建中。
什么是控制反转?
控制反转是将原来需要在程序中手动去new的对象交给IOC容器创建,并且动态的注入到所需的对象当中。
依赖注入的优势?
Class A中用到了Class B的对象b,一般情况下,需要在A的代码中显式的new一个B的对象。
采用依赖注入技术之后,A的代码只需要定义一个私有的B对象,不需要直接new来获得这个对象,而是通过相关的容器控制程序来将B对象在外部new出来并注入到A类里的引用中。
.Net Core中的依赖注入容器
ASP.NET Core 包含一个默认支持构造函数注入的简单内置容器,可以在Startup类的ConfigureServices方法中配置内置容器的服务。
比较常见的还有Autofac。
依赖注入的方式
构造函数注入、属性注入
代码
类要求在他们构造时向其提供抽象(通常是接口),而不是引用特定的实现。
先创建服务类和接口。
在Startup类的ConfigureServices方法中配置内置容器的服务
依赖注入的3种方式及其生命周期
1、Transient 瞬时
Transient 生命周期服务在他们每次请求时被创建。适合轻量级,无状态的服务。
2、Scoped 作用域
Scoped生命周期在每次请求时创建一次。
3、Singleton 单例
Singleton 生命周期服务在它们第一次请求时创建,并且每个后续请求使用相同的实例。
在控制器中创建注入两次服务,测试不同方式依赖注入的生命周期。
瞬时依赖注入测试结果