什么是依赖注入?

控制反转(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。

依赖注入的方式

 构造函数注入、属性注入

代码

类要求在他们构造时向其提供抽象(通常是接口),而不是引用特定的实现。

先创建服务类和接口。

corenlpJ 依赖分析 .net core依赖注入的好处_生命周期

在Startup类的ConfigureServices方法中配置内置容器的服务

corenlpJ 依赖分析 .net core依赖注入的好处_生命周期_02

 

 

依赖注入的3种方式及其生命周期

1、Transient 瞬时

 

Transient 生命周期服务在他们每次请求时被创建。适合轻量级,无状态的服务。

 

2、Scoped 作用域

 

Scoped生命周期在每次请求时创建一次。

 

3、Singleton 单例

 

Singleton 生命周期服务在它们第一次请求时创建,并且每个后续请求使用相同的实例。

 

在控制器中创建注入两次服务,测试不同方式依赖注入的生命周期。

corenlpJ 依赖分析 .net core依赖注入的好处_依赖注入_03

 

 

 瞬时依赖注入测试结果

corenlpJ 依赖分析 .net core依赖注入的好处_corenlpJ 依赖分析_04