사람들이 Spring을 말할떄 스프링 프레임워크라 말하고 라이브러리를 사용한다라는 표현을 자주 사용한다.
그러면 프레임워크와 라이브러리의 차이는 무엇일까?
애플리케이션의 구현을 위해 필요한 여러가지 기능들을 제공한다라는 의미에서 Framework과 Library는 유사하다고 볼 수 있지만 Framework과 Library에는 결정적인 차이점이 존재하는데 그것은 바로 애플리케이션에 대한 제어권의 차이가 있다.
개발자가 짜 놓은 코드내에서 필요한 기능이 있으면 해당 라이브러리를 호출해서 사용하는 것이 바로 Library, 즉 애플리케이션 흐름의 주도권이 개발자에게 있는것이다.
FrameWork는애플리케이션 흐름의 주도권이 개발자가 아닌 Framework에 있는 것이다.
쉽게 표현하기 위해 프레임워크를 집이라는 건물에 비유하였으며 라이브러리는 집 안에 포함되는 가구에 비유할 수 있다.
예를들면 집은 내가 마음대로 바꿀 수 없지만, 집에 있는 TV,침대 등 사용하지 않으면 버려도되고 바꿀 수 있다