1. IoC 소개 IoC(Inversion of Control), 제어의 역전 소프트웨어 설계**에서의 프로그래밍 원칙 으로, 프레임워크 에서 정의된 **제어의 흐름(flow of Control)**을 사용, 프레임워크 가 사용자 정의 코드 를 필요에 따라 호출하여 사용하게 한다. 기존 절차적 프로그래밍 에서의 제어의 흐름 과 비교하면 **제어가 역전**되었다. 1.1. 제어의 역전 기존 절차적 프로그래밍 에서는 어떤 작업을 처리하기 위해 사용자 정의 코드 에 제어의 흐름 (선언과 반복 및 분기문, 함수와 재사용가능한 라이브러리 호출등의 절차)을 사용자가 직접 정의하던 방식과 비교해서 IoC 원칙에 따른 설계는 프레임워크 가 작업을 수행하기 위해 프레임워크 에 정의되어있는 제어의 흐름 대로 프로그램을 수행, 필요에 따라 사용자 정의 코드 를 (마치, 재사용 라이브러리를 사용하듯)호출하게 된다. 즉, 제어의 흐름 이 사용자에게서 프레임워크 로 넘어가게 되었고 이를 제어의 역전 이라고 말한다. 2. OOP에서의 IoC 객체 지향 프로그래밍 에서 **IoC(Inversion of Control)**은 프로그래밍 원칙 으로, 모든 객체들에 대한 제어 를 제어 만을 담당하는 특별한 객체 가 하는 형태이다. 2.1. OOP의 제어(Control) 객체 들에 대한 제어 란, 간단히 말해, 객체 들의 생성 과 메소드 호출 , 소멸 등 과 같은 생명주기 를 관리하는 것을 말한다. 2.2 DI(Dependency Injection) DI(Dependency Injection), 의존성 주입 은 객체 지향 프로그래밍 에서의 IoC의 구현 인 디자인 패턴 이다. DI 패턴 에서 모든 객체는 자신이 의존성을 가지는 다른 객체에 대한 참조를 외부 코드인 Injecter 로 부터 주입 받는다. 객체는 자신이 의존성 을 가지는 다른 객체들의 생명주기 에 관여할 수 없다. 즉, 커스텀 클래스 내부에서는 다른 객체의 생성 및 초기화나 소멸 시기를 독립적으로 지정할 수가 ...