의존관계 주입(DI, Dependency Injection)
오브젝트 레퍼런스를 외부로부터 주입받고 이를 통해 여타 오브젝트와 다이나믹하게 의존관계가 만들어지는 것.
구체적인 의존 오브젝트와 그것을 사용할 주체, 클라이언트라고 부르는 오브젝트를 런타임시에 연결해주는 작업이다.
조건
1. 클래스 모델이나 코드에는 런타임 시점의 의존관계가 드러나지 않아야한다.
: 이를 위해서는 인터페이스에만 의존을 해야한다.
2. 런타임 시점의 의존관계는 컨테이너나 팩토리같은 제3의 존재가 결정한다.
3. 의존관계는 사용할 오브젝트에 대한 레퍼런스를 외부에서 제공(주입)해줌으로써 만들어진다.
효과
1. 런타임 시에만 의존관계가 주입되기 때문에 관계가 느슨해지면서 변화에 영향을 덜 받는다. => 결합도가 낮아진다.
핵심
1. 오브젝트는 다른 오브젝트에 주입할 수 있는게 아니다. 오브젝트의 레퍼런스가 전달될 뿐.
2. 설계 시점에는 알지 못했던 두 오브젝트의 관계를 맺도록 도와주는 제 3의 존재가 있다!
3. 그 제 3의 존재에는 애플리케이션 컨텍스트, 빈 팩토리, IoC 컨테이너 등이 있다.
반응형
'🌱 SPRING' 카테고리의 다른 글
[SpringCloud] Resilience4j와 Spring Cloud Circuit Breaker (0) | 2021.05.16 |
---|---|
[SpringBoot] 컨트롤러, View(JSP) 작성하기 (0) | 2020.05.30 |
[SpringBoot] 스프링 부트 프로젝트 생성 (0) | 2020.05.30 |
@MVC : RequestMapping (0) | 2018.03.29 |
로그인 체크 필터 (0) | 2017.09.05 |