IoC, DI, 컨테이너

wangjh789·2022년 7월 22일
0

IoC

제어의 역전, 말 그대로 프로그램 흐름의 제어가 역전되었다는 의미이다.
기존의 객체는 자신이 사용할 인스턴스를 직접 생성하고 사용했다.
하지만 AppConfig의 등장으로 객체를 생성하고 연결하는 역할은 config에게 떠넘기고 제어가 역전된 객체는 config로부터 받은 객체를 사용하기만 할 뿐이다.
이로써 객체 간의 결합력이 낮추고, 관심사를 분리할 수 있게 된다.

넓은 의미에서의 IoC는 프레임워크를 예로 들 수 있다.
순수 코드는 main() 함수에서 우리가 작성한 흐름대로 로직이 수행된다.
하지만 프레임워크는 자신만의 흐름을 가지고 있고, 우리는 조그마한 코드 조각을 그 사이에 껴 넣어 의도대로 흐름이 진행되게 할 뿐이다

DI

기존의 정적 의존관계는 객체가 새로운 객체의 구현체를 사용해 수행 전에도 의존관계를 알 수 있다.
appconfig를 도입한 후, 객체는 의존한 객체의 인터페이스만 알고, 구현체를 알지 못하기 때문에 동적 의존관계가 되었다.
이렇게 외부에서 객체를 생성하고 런타임에 의존관계가 동적으로 생성되는 것이 의존성 주입이라고 한다.

컨테이너

AppConfig 처럼 객체를 생성하고 관리하면서 의존관계를 설정하는 것을 DI컨테이너, IoC컨테이너 라고 한다.

profile
기록

0개의 댓글