Dotnet 6 Scrutor (Auto Scan And Register Library)
- 서론
Dotnet 6 에서는 의존성 문제를 해결 하기 위해서자체적인 Dependency Injection system 을 이용한다.(AddTransient, AddScoped, AddSingleton)그러나 이러한 System 상의 DI만으로는 다양한 의존성 문제를해결하기 어려울 수 있다.그래서 이러한 문제들을 해결 하기 위한 3rd party library 들이 존재한다.(Autofac, SimpleInjector, etc ...)이중에서 dotnet 자체적인 DI 시스템을 이용하여 customizing 된 library 인 Scrutor 에 대해서 알아보자 - Scrutor
Microsoft.Extensions.DependencyInjection용 어셈블리 스캔 및 확장 - 설치 및 Test
dotnet add package ScrutorProgram.cs 이동 아래 추가
사용 (ScrutorController.cs 추가)
- Scan and Register Rule
- IMyService 를 구현한 class 가 여러가지 라면 구현된 code 위치에 따라 지정되는 걸로 판단된다.. (정확하지는 않다. alphanumeric 기준은 아니다.)
즉 IMyService 를 구현한 MyService, ZMyService, AMyService 가 있고
한 파일 안에 구현되었다면 파일의 가장 마지막에 구현되어 있는 class 를
자동으로 injection 해온다. (??????????) - 위와 같은 경우 자신이 원하는 class 를 가져오기 어렵기 때문에
해결하는 두가지 방법이 있다. - IEnumerable<IMyService> 로 감싼 후 원하는 것을 find 한다.
- IMyService 를 Filtering 하기 위해 IMyService 를 확장 한다.
- IEnumerable<IMyService> 를 이용할 경우
- IMyService Interface 를 확장 할 경우
아래와 같이 IMyService 확장
아래와 같이 ScrutorController 변경
관련 영상





댓글
댓글 쓰기