Inversion of Control [제어 역전]
- 제어의 역전
- 제어 흐름을 애플리케이션의 외부 요소에게 위임하는 패턴
- 객체의 생성과 관리, 제공의 주체가 프로그래머가 아닌 컨테이너(프레임워크)가 되는 것
- IoC를 통해 코드의 결합도를 낮추고, 테스트와 유지보수가 더 용이해진다.
Dependency Injection [의존성 주입]
- IoC의 주요 기법 중 하나
- 객체가 필요로 하는 의존성을 외부에서 주입받아 사용하는 패턴
- 특정 서비스나 객체가 필요할 때 생성하는 것이 아니라, 외부에서 제공되는 객체를 전달받아 사용하는 방식
의존성 주입 방법
- Constructor 주입
- 클래스의 생성자 메서드를 통해 의존성을 주입하는 방식
- 의존성은 주입받는 생성자 매개변수를 통해 전달된다.
- @Injectable() 데코레이터를 사용하여 의존성이 주입 가능한 상태로 만든다.
import { Injectable } from '@nestjs/common';
@Injectable()
export class SomeService {
constructor(private readonly someDependency: SomeDependency) {}
performAction() {
// someDependency 사용
}
}
- Property 주입
- 클래스 내의 특정 속성에 의존성을 주입하는 방식
- 아래의 이유로 인해 Constructor 주입 방식이 선호된다.
- 객체가 생성될 때 마다 특정 속성에 의존성을 추가하면 결합도가 증가한다.
- 의존성을 쉽게 대체하거나 테스트하기 어렵다.
'Computer Science' 카테고리의 다른 글
[CS] DTO (0) | 2025.01.20 |
---|---|
[CS] Primary Key / Foreign Key (0) | 2025.01.20 |
[CS] MVC Pattern (0) | 2025.01.20 |
[CS] Overriding / Overloading (0) | 2025.01.20 |
[CS] RDBMS / NoSQL (0) | 2025.01.14 |