[Spring] IoC, DI에 대한 나름의 이해

2023. 9. 16. 23:03Spring

IoC = Inversion of Control 즉, 통제권의 역전이다. 

원래 객체를 선택하는 통제권은 클라이언트 코드가 가지고 있다. 하지만 이것을 선택하는 통제권을 AppConfig와 같은 어셈블러, 컨테이너에 넘기는 것을 IoC라고 한다.

그러한 관점에서 프레임워크는 IoC를 기반으로 한다. 전체 로직 중 일부가 나의 코드로 사용되기 때문이다. 반면에 라이브러리는 내가 짠 코드를 실행시키기 때문에 통제권이 나한테 있다.

정적인 클래스 의존 관계는 클라이언트 코드가 인터페이스에만 의존하면 이는 코드를 실행시키지 않고도 그 의존관계를 파악할 수 있다. 이러한 의존관계가 정적인 클래스 의존 관계다. 아래는 확실히 정해진 것이다.

동적인 객체 인스턴스 의존 관계는 실제 실행시키기 전까지는 어떠한 구현체를 사용하게 될지는 모르기 때문에 동적으로 정해진다고 해서  이러한 관계를 동적인 객체 인스턴스 의존 관계라고 한다. 아래는 런타임 시점에 정해지는 것이다.

DI는 AppConfig와 같이 외부에서 이러한 동적인 의존 관계를 주입해주는 것을 의미한다. 그리고 이와 같이 의존관계를 주입해주는 AppConfig를 IoC 컨테이너 또는 DI 컨테이너라고 한다. 추가적으로 최종적으로 조립해주는 역할을 한다고 해서 어셈블러나 오브젝트 팩토리 등으로 불리기도 한다.

 

Reference


https://www.inflearn.com/course/lecture?courseSlug=%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8&unitId=55349 

 

학습 페이지

 

www.inflearn.com