Autofac

작성: sangseek | 게시 날짜: 2026/01/16 | 조회수: 50
[ 편집불가 ]

Autofac은 .NET 플랫폼용 의존성 주입(Dependency Injection, DI) 컨테이너입니다. 객체의 생성과 생명주기를 관리해 주고, 의존성 역전(Inversion of Control)을 통해 코드의 결합도를 낮추고 테스트·유지보수를 쉽게 해 줍니다. 주요 특징 - 구성요소 등록(타입, 인스턴스, 팩토리 등) 및 해석(Resolve). - 생성자 주입을 기본으로 하며, 속성(property)·메서드 주입도 지원. - 생명주기 관리: InstancePerDependency(기본), SingleInstance(싱글톤), InstancePerLifetimeScope 등으로 범위 지정. - 모듈(Module) 단위로 등록을 묶어 재사용 가능. - 제네릭, 이름/키 서비스 등록, 조건부 등록 등 유연한 등록 방식. - ASP.NET Core, MVC, Web API 등과 통합하는 확장 패키지(Autofac.Extensions.DependencyInjection 등). - 인터셉트(인터페이스/메서드 가로채기) 지원(예: DynamicProxy를 통한 AOP 스타일 기능). - Lazy, Func, IEnumerable 등 다양한 해석 패턴과 Owned 같은 소유권 관리 도구 제공. 간단한 사용 예 (개념적) var builder = new ContainerBuilder(); builder.RegisterType().As().SingleInstance(); builder.RegisterType().As(); var container = builder.Build(); using (var scope = container.BeginLifetimeScope()) { var svc = scope.Resolve(); svc.DoWork(); } 왜 쓰는가 - 의존성 주입을 통해 테스트 용이성(모의(Mock) 주입), 모듈화, 책임 분리 향상. - 객체 생성과 생명주기를 중앙에서 일관되게 관리. - 대규모 애플리케이션에서 확장성과 구성 관리에 유리. 주의할 점 - DI 컨테이너 사용 자체가 설계 문제를 해결해 주는 것은 아니며, 의존성 과다(숨겨진 의존성)를 초래하지 않도록 명확한 설계 필요. - 런타임 구성과 복잡한 등록이 많아지면 학습 곡선과 디버깅 비용이 증가할 수 있음. 요약하자면, Autofac은 .NET에서 객체 생성·의존성·생명주기를 유연하게 관리해 주는 강력한 DI 컨테이너입니다.
내용이 부정하다면 싫어요를 누르세요.