개발 상식

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 선언 불가로 인한 불변성 보장을 하지 않는 점, 순환 의존성에 대한 문제점 등이 있기 때문에 권장하지 않는다.
반응형