개발 상식
Spring - DI
정리하고기록하자
2022. 5. 2. 18:27
반응형
DI ( Dependency Injection )
Spring Framework는 IoC Container를 통해 인스턴스 생성을 일괄적으로 진행하고 라이프 사이클 관리 까지 위임한다.
인스턴스의 생성 및 관리의 주체가 IoC Container 이고 의존성을 주입해주기 때문에 제어의 역전이라고 불린다.
의존성을 주입하는 것을 DI ( Dependency Injection ) 이라고 한다.
DI는 세가지 방법이 있다.
1. Setter Injection ( 수정자 주입 ) : 의존성을 입력받는 Setter 메소드를 만들고 이를 통해 의존성을 주입받는다.
2. Constructor Injection ( 생성자 주입 ) : 필요한 의존성을 포함하는 클래스의 생성자를 만들고 이를 통해 의존성을 주입 받는다.
- Spring Framework Reforence에서 권장하는 방법이다.
3. Field Injection ( 필드 주입 ) : 변수 선언부에 @Autowried Annotation을 사용하여 의존성을 주입받는다.
- 의존성을 주입하기 간단하지만 여러 가지 문제점이 있어 생성자 주입을 통한 DI를 권장하고 있다.
- SOLID 원칙 중 하나인 단일 책임 (SRP)의 원칙 위반, 테스트에 용이하지 않은점, final 선언 불가로 인한 불변성 보장을 하지 않는 점, 순환 의존성에 대한 문제점 등이 있기 때문에 권장하지 않는다.
반응형