피드로 돌아가기
Migrando um YMS de 5 anos: Do Angular 16 ao 21 (Parte 3) - A Revolução Silenciosa da Função inject()
Dev.toDev.to
Frontend

inject() 함수 도입을 통한 Angular 의존성 주입 구조 최적화 및 상속 복잡도 제거

Migrando um YMS de 5 anos: Do Angular 16 ao 21 (Parte 3) - A Revolução Silenciosa da Função inject()

Erick Gabriel dos Santos Alves2026년 6월 4일4intermediate

Context

Angular 16 기반 Enterprise 시스템의 대규모 의존성 주입으로 인한 Constructor 비대화 및 Boilerplate 코드 증가 문제 발생. 특히 Class Inheritance 구조에서 부모 클래스의 의존성을 자식 클래스가 모두 전달해야 하는 super() 호출로 인한 강한 결합도와 유지보수 비용 상승 직면.

Technical Solution

  • Constructor 기반 DI에서 Property-based DI로 전환하여 클래스 초기화 로직 단순화
  • inject() 함수를 통한 런타임 의존성 해결로 부모 클래스의 서비스 주입 책임을 자식 클래스에서 완전히 분리
  • Base Class의 의존성 변경이 하위 컴포넌트에 영향을 주지 않는 캡슐화 구조 설계로 Refactoring 리스크 최소화
  • HttpInterceptor를 클래스 기반에서 Functional Interceptor로 전환하여 불필요한 클래스 선언 제거
  • 함수 내부에서 inject()를 직접 호출하는 방식을 통한 Functional Programming 패러다임 적용

- Class Inheritance 구조에서 super() 전달 인자가 3개 이상인 경우 inject() 도입 검토 - Boilerplate 코드가 많은 Constructor를 제거하고 Property-based DI로 전환하여 가독성 확보 - 클래스 기반 Interceptor를 HttpInterceptorFn으로 마이그레이션하여 코드량 감소 및 모듈성 향상

원문 읽기