Spring IoC, DI, 컨테이너

김두현·2023년 5월 18일
2

Spring

목록 보기
5/13
post-thumbnail

IoC : 제어의 역전

Inversion of Control

이전 글에서의 AppConfig의 역할을 떠올려보자.
기존에는 Client 코드에서 구현 객체를 생성하여 실행됐지만, AppConfig의 등장으로 Client 코드는 자신의 로직만 실행하게 됐다.
즉, 프로그램의 제어 흐름을 AppConfig가 가져갔다.

이렇듯, 프로그램의 제어 흐름을 직접 제어하는 것이 아닌 외부에서 관리하는 것을 제어의 역전(IoC)이라고 한다.


DI : 의존관계 주입

Dependency Injection

Client 코드는 Interface에 의존할 뿐, 프로그램 동작 시 어떤 구현 객체가 사용될지는 알 수 없다.
의존관계는 정적인 Class 의존관계와 동적인 객체 의존관계로 나뉘어진다.

  • 정적인 Class 의존관계
    위와같이 프로그램을 실행하지 않아도 알 수 있는 Class의 간의 관계를 의미한다.
    OrderServiceImpl은 MemberRepository와 DiscountPolicy를 의존하는 것을 알 수 있다.

  • 동적인 객체 의존관계
    프로그램 실행 시점에 생성된 객체가 연결된 관계를 의미한다.

의존관계 주입(DI)이란, 프로그램 실행 시점에 외부에서 객체를 Client에게 전달해 Client와 Server의 의존관계가 연결되는 것을 의미한다.

DI를 통해 정적인 Class 의존관계를 변경하지 않고 동적인 객체 의존관계를 변경할 수 있게된다.


DI 컨테이너

IoC 컨테이너라고도 하나, 의존관계 주입에 초점을 맞추어 주로 DI 컨테이너라고 한다.

DI 컨테이너란, 객체를 생성하고 관리하며 의존관계를 연결해주는 것이다.

즉, AppConfig가 DI 컨테이너이다.


참고 자료

https://www.inflearn.com/course/스프링-핵심-원리-기본편


💕오류 지적 및 피드백은 언제든 환영입니다. 복제시 출처 남겨주세요!💕
💕좋아요와 댓글은 큰 힘이 됩니다.💕
profile
I AM WHO I AM

0개의 댓글