這是一個更普遍的問題。
但是我有一個關于在startup.cs中注入服務的問題:
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers(opt =>
{
var policy = new AuthorizationPolicyBuilder().RequireAuthenticatedUser().Build();
opt.Filters.Add(new AuthorizeFilter(policy));
})
.AddFluentValidation(config =>
{
config.RegisterValidatorsFromAssemblyContaining<Create>();
});
services.AddApplicationServices(Configuration);
services.AddIdentityServices(Configuration);
}
所以無論如何我將服務拆分到其他檔案中:
public static class StartupExtensionClass
{
public static IServiceCollection AddApplicationServices(this IServiceCollection services,
IConfiguration Configuration)
{
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new OpenApiInfo { Title = "API", Version = "v1" });
});
services.AddDbContext<DataContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
services.AddCors(opt =>
{
opt.AddPolicy("CorsPolicy", policy =>
{
policy.AllowAnyMethod().AllowAnyHeader().WithOrigins("http://localhost:3000");
});
});
services.AddMediatR(typeof(List.Handler).Assembly);
services.AddAutoMapper(typeof(MappingProfiles).Assembly);
services.AddScoped<IUserAccessor, UserAccessor >();
services.AddScoped<IPhotoAccessor, PhotoAccessor>();
services.Configure<CloudinarySettings>(Configuration.GetSection("Cloudinary"));
return services;
}
但例如,如果您有數百個服務。這不是在啟動階段使應用程式過載嗎?
因為所有的服務都會在開始時初始化。
有沒有辦法在直接呼叫某些服務時對其進行初始化。
喜歡懶加載
謝謝
uj5u.com熱心網友回復:
我相信您只是在設定當要求指定型別的類時運行時將使用的內容......您不會立即創建類。因此,如果您的應用程式剛剛啟動,但您從未向它發出任何請求,則不會像 100 個類只是無緣無故地實體化。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/397522.html
