객체 지향프로그래밍을 하다보면 수많은 객체를 생성하고,객체안에서 객체를 구현해야 할 때가 있다.
다른 객체 들을 이용할 때 이용 당하는 객체는 이용하는 객체 안에서 실행 되는 것이 대부분이다.
이런 상황에서는 일반적으로 모듈의 강한 결합이 형성되는 의존성 주입(DI)이 이루어진다.
스프링에서는 의존하는 객체를 컨테이너를 통하여 관리하고 자동으로 주입하기 때문에 스프링을 사용하면 약한 결합의 설계가 가능하다
2)결국 프로그램의 제어의 흐름은 개발자가 정하는 것이 아니라 컨테이너가 맡게 되어 **제어의 역전 (IOC)**이 발생하게 되는데 이를 IOC(Inversion of Control)라 한다.

