.NET 옵션 패턴을 사용한 DI 서비스 구성

😮!

우리는 .NET 5에 너무 가까워지고 있어서 제목에 CORE를 추가하지도 않았습니다!

어쨌든, 저는 .NET Co....를 사용하여 다양한 소스에서 귀하의 서비스로 구성을 가져오는 쉬운 방법을 공유하고 싶습니다. Corr... 제 말은, .NET을 사용합니다.

자, 이 예에서는 볼트 서비스가 있고 appsettings.json 에서 구성도 받고 있습니다.

먼저 다음과 같이 내 서비스에 대한 구성 개체를 만들 수 있습니다.

public class MyServiceOptions
{
    public string MyVaultSecret { get; set; }
    public string MyConfigVar { get; set; }
}

문제는 내 Startup.cs 에서 내 서비스가 다음과 같도록 종속성 주입을 통해 전달하는 방법입니다.

services.AddScoped<IMyService, MyService>();

해결책은 이와 같이 옵션을 등록하는 것입니다. 자세한 내용은 공식 Microsoft 옵션 문서를 참조하세요. 보시다시피 저는 IVaultService 에 대한 참조를 사용하고 있습니다. 이는 모든 서비스가 될 수 있습니다.

services.AddOptions<MyServiceOptions>()
 .Configure<IVaultService>((o, v) => 
 {
     o.MyVaultSecret = v.GetSecret("SecretKey");
     o.MyConfigVar = Configuration["ConfigKey"];
 });

어쨌든 이제 다음과 같이 구성을 사용할 수 있습니다.

public class MyService : IMyService
{
    private readonly IOptions<MyServiceOptions> _options;

    public MyService(
        IOptions<MyServiceOptions> o
        )
    {
        _options = o.Value;

        Console.WriteLine(_options.MyVaultSecret);
        Console.WriteLine(_options.MyConfigVar);
    }
}


해피코딩,
세자르 코드

좋은 웹페이지 즐겨찾기