DI(Dependency Injection: 의존성 주입)
외부에서 두 객체 간의 관계를 결정해주는 디자인 패턴으로, 인터페이스를 사이에 둬서 클래스 레벨에서는 의존관계가 고정되지 않도록 하고 런타임 시에 관계를 다이나믹하게 주입하여 유연성을 확보하고 결함도를 낮출 수 있게 해준다.
의존성이란 한 객체가 다른 객체를 사용할 때 의존성이 있다고 한다.
- 두 객체 간의 관계라는 관심사의 분리
- 두 객체 간의 결합도를 낮춤
- 객체의 유연성을 높임
- 테스트 작성을 용이하게 함
DI는 세가지 방법이 있습니다. 생성자 삽입, Setter를 이용한 메소드 매개 변수 삽입, 필드 주입이 있습니다.
- 생성자 주입: 생성자 호출 시점에 딱 1번만 호출되는 것을 보장하며, 불변, 필수 의존관계에 사용
- Setter 주입: 선택, 변경 가능성이 있는 의존관계에 사용되며 스프링빈을 선택적으로 등록이 가능
- 필드 주입: '@Autowired'를 사용하는데 외부에서 변경이 불가능하여 테스트 하기 힘듬. DI 프레임워크 없이는 작동하기 힘들며, 주로 애플리케이션과 관계 없는 테스트 코드나 '@Configuration' 같은 스프링 설정 목적으로 사용
'Back-end > Spring' 카테고리의 다른 글
[Spring] Bean/Component 어노테이션에 대해서 설명, 둘의 차이점 (0) | 2021.11.16 |
---|---|
[Spring] Autowiring 과정 (0) | 2021.11.16 |
[Spring] IoC 컨테이너의 역할 (0) | 2021.11.16 |
[Spring] Spring Bean의 Scope (0) | 2021.11.15 |
[Spring] Spring Bean의 생성 과정 (0) | 2021.11.15 |