Notice
Recent Posts
Recent Comments
Link
관리 메뉴

look-forest

IoC/DI 컨테이너 본문

Spring/Spring 핵심 원리

IoC/DI 컨테이너

studyHub 2023. 4. 29. 16:22

제어의 역전 IoC(Inversion of Control)

프로그래머가 직접 객체 생성, 연결하지 않고 프레임워크 해준다. 즉, 프레임워크의 라이프 사이클 상에서 이루어진다.

이처럼 프로그램의 제어 흐름을 직접 제어하는 것이 아니라 외부에서 관리하는 제어의 역전(IoC)이라 한다

스프링의 경우 빈에 대한 제어권을 프로그래머가 아닌 프레임워크가 가져감으로써, OCP, DIP 원칙을 가능케 해준다.

[예제]에서,
기존 코드는 클라이언트 구현 객체가 스스로 필요한 서버 구현 객체를 생성하고, 연결하고, 실행했다

그러나 AppConfig 등장한 이후에 구현 객체는 자신의 로직을 실행하는 역할만 담당한다
프로그램의 제어 흐름은 이제 AppConfig 가져간다

 


 

의존관계 주입 DI(Dependency Injection)

애플리케이션 실행 시점(런타임) 외부에서 실제 구현 객체를 생성하고

클라이언트에 전달해서 클라이언트와 서버의 실제 의존관계가 연결되는 것을 의존관계 주입이라 한다

 

클라이언트는 실제 어떤 구현 객체가 사용될지는 모른 인터페이스에만 의존 주입된다

  • 의존관계 주입을 사용하면
    • 클라이언트 코드를 변경하지 않고, 클라이언트가 호출하는 대상 타입의 인스턴스를 변경 있다.
    • 정적인 클래스 의존관계를 변경하지 않고, 동적인 객체 인스턴스 의존관계를 쉽게 변경 있다

 


 

IoC 컨테이너, DI 컨테이너

AppConfig처럼 객체를 생성하고 관리하면서 의존관계를 연결해 주는 것IoC 컨테이너 또는 DI 컨테이너라 한다.

(또는 어샘블러, 오브젝트 팩토리 등으로 불리기도 한다)

 

 

 


참고 자료
스프링 핵심 원리(김영한 님)