如何通过依赖注入DI在Asp.Net Core WebAPI中实现的自动管理?

摘要:一、使用DI注入 在之前的文章中已经讲过DI的概念(.net 温故知新:【7】IOC控制反转,DI依赖注入),基于控制台程序演示了DI依赖注入的使用,基于Microsoft.Extensions.DependencyInjection完成。
一、使用DI注入 在之前的文章中已经讲过DI的概念(.net 温故知新:【7】IOC控制反转,DI依赖注入),基于控制台程序演示了DI依赖注入的使用,基于Microsoft.Extensions.DependencyInjection完成。那在WebAPI中如何使用依赖注入呢? 首先新建一个WebAPI项目WebAPI_DI,框架.net 7,其实 webapi 项目也是控制台应用程序,只是在Asp.Net Core webapi框架中很多基础工作已经帮我们封装配置好了。 项目新建完成后在Program.cs 中自动生成如下代码: namespace WebAPI_DI { public class Program { public static void Main(string[] args) { var builder = WebApplication.CreateBuilder(args); // Add services to the container. builder.Services.AddControllers(); // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle builder.Services.AddEndpointsApiExplorer(); builder.Services.AddSwaggerGen(); var app = builder.Build(); // Configure the HTTP request pipeline. if (app.Environment.IsDevelopment()) { app.UseSwagger(); app.UseSwaggerUI(); } app.UseHttpsRedirection(); app.UseAuthorization(); app.MapControllers(); app.Run(); } } } builder.Services 则是帮我已经创建好的IServiceCollection 对象。 我们再新建一个测试类 DITestClass: public class DITestClass { public int Add(int i, int n) { return i + n; } } 然后我们在builder.Services中进行注册 最后我们在默认的WeatherForecastController控制器里面加一个post方法,并用构造函数注入的方式将DITestClass注入进去。 swagger中调用测试: 二、[FromService] 注入 FromServicesAttribute 允许将服务直接注入到操作方法,而无需使用构造函数注入。 改属性的作用主要针对我们在依赖注入初始化对象(该对象初始化很耗时),这个时候不管请求的api方法有没有用到该对象都会等待很长时间。
阅读全文