Inversion of Control
은 객체 혹은 프로그램의 일부에 대한 제어권을 컨테이너, 혹은 프레임워크에게 주는 소프트웨어 공학의 원칙입니다. 전통적인 프로그래밍에서 개발자는 라이브러리를 통해 라이브러리의 코드를 직접 호출하였습니다. 즉 개발자가 프로그램 실행 흐름의 제어권을 가지고 있었습니다. 프레임워크를 활용한 현대적인 프로그래밍에서는 프레임워크가 프로그램의 전체 실행 흐름을 제어하며 개발자는 프레임워크를 위한 커스텀 코드를 작성합니다. 이는 프레임워크의 클래스를 상속하거나 우리의 커스텀 클래스를 프레임워크에 꼽아넣는 방식으로 이루어집니다.
이러한 구조의 이점은 다음과 같습니다
IOC 를 달성하기 위한 다양한 메커니즘이 있습니다.
이번 정리에서는 가장 흔히 IOC의 개념으로서 이해되고 Spring 이 IOC를 위해 사용중인 메커니즘인 DI에 대해서 정리해 보겠습니다. DI외의 IOC 메커니즘은 아래 페이지를 참고해주세요.
See Also)
Dependency Injection 이전에 Dependency
. 즉, 의존관계란 무엇인지 먼저 알아봅시다.
Figure from 우아한객체지향 by 조영호님 @06:40
class A{
private B b;
}
class A{
private B method(B b){
return new B();
}
}
class A extends B {}
class A extends B {}
*의존관계 Dependency*