IoC, DI 그리고 컨테이너 모든 객체는 클라이언트 객체와 서버 객체로 나뉜다. 이 때, 호출하는 객체가 호출 당하는 객체에게 의존적이며 의존 관계에 있다고 표현한다. IoC 제어의 역전 (Inversion of Control) 기존 프로그램은 클라이언트 구현 객체가 스스로 필요한 서버 구현 객체를 생성하고, 연결하고, 실행했다. 한마디로 구현 객체가 프로그램의 제어 흐름을 직접 조종했다. 개발자 입장에서는 당연한 흐름이다. 반면에 AppConfig(스프링의 역할을 대신 해주는 커스텀 클래스)가 생긴 이후에는 구역 영역과 사용 영역으로 나뉘어 AppConfig는 사용해야하는 객체를 구현하고 역할을 표현하는 일만하고 사용 영역은 비즈니스 로직을 담당하게 되었다. 이렇게 객체가 스스로 사용해야하는 객체를 ..