[Spring] IoC(제어의 역전), DI(의존성 주입), Container(컨테이너) | 프레임워크 VS 라이브러리
웹 프레임워크(Spring, Django 등..)를 사용하다보면 IoC, DI 라는 용어가 자주 등장한다. 이것들을 어떤 뜻을 가진 용어일까? Spring 기준으로 이 용어들을 설명하고자 한다. ● IoC(제어의 역전) IoC란 Inversion of Control의 약어로, 프로그래머가 작성한 프로그램이 재사용 라이브러리의 흐름 제어를 받게 되는 소프트웨어 디자인 패턴을 말한다. 기존 프로그램은 클라이언트 구현 객체가 스스로 필요한 서버 구현 객체를 생성하고, 연결하고, 실행했다. 한마디로 구현 객체가 프로그램의 제어 흐름을 스스로 조종했다. 반면에 프레임워크가 등장하면서 구현 객체는 자신의 로직을 실행하는 역할만 담당한다. 프로그램의 제어 흐름은 이제 프레임워크가 가져간다. 프로그램에 대한 제어 흐름..