IoC(Inversion of Control, 제어의 역전) IoC는 말그대로 제어가 역전되었다, 제어의 흐름을 바꾼다는 뜻이다. 제어가 역전이 안된 상태부터 생각해보자. 처음 프로그래밍을 하던 시절을 생각해보면, 보통 프로그램은 main 메서드가 실행되고, 다음에 사용할 객체를 결정, 생성하고, 객체에 있는 메소드를 호출한다. 그리고 이 오브젝트 또한 자신이 사용할 객체를 스스로 생성하고 사용한다. 자신에 관련된 작업은 자신이 제어한다. 제어가 역전이 되었다는 것은 지금까지의 능동적인 과정이 수동적으로 바뀌는 것을 말한다. 객체가 자신이 사용할 오브젝트를 스스로 결정하지도 않고, 생성하지도 않는다. 다른 누군가가 외부에서 객체를 만들어서 자신에게 넘기면 그것을 사용한다. 스프링에서는 애플리케이션 컨텍스..