정리하고기록하자

Spring - DI 본문

개발 상식

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

'개발 상식' 카테고리의 다른 글

TCP / IP  (0) 2022.06.05
Spring - PSA  (0) 2022.05.02
Spring - AOP  (0) 2022.04.30
JDK 1.7 -> 1.8  (0) 2022.04.28
Spring - IoC  (0) 2022.04.22