스프링 3대장 Controller, Service, Repository 알아보기에 앞서 MVC 디자인 패턴에 대해서 먼저 아는 것이 중요합니다.

MVC패턴은 Model-View-Controller의 약자로서 개발을 할 때 3가지 형태로 역할을 나누어 개발하는 방법론입니다.
JSP를 사용할 때 역할을 분리하지 않아 JSP 파일에 대한 비중이 커졌고 유지 및 보수하기 어려웠습니다. 그래서 나타난 MVC 패턴은 모델 - 뷰 - 컨트롤러 분리로 인해서 유지보수성, 확장성, 유연성이 향상하고, 코드의 중복도 사라지는 앞선 문제점을 해결해 주었습니다.

MVC패턴 설명과 똑같이 Controller은 MVC에서 C에 해당 하며 주로 사용자의 요청을 처리 한 후 지정된 뷰에 모델 객체를 넘겨주는 역할을 합니다.
사용자의 요청이 진입하는 지점이며 요청에 따라 어떤 처리를 할지 결정을 Service에 넘겨줍니다.
그리고 Service에서 처리한 내용을 다시 Controller가 받고 받은것을 Controller가 넘겨주는 역할을 하는것입니다.

대규모 서비스중 A서비스, B서비스, C서비스 가 있다고 예를 들어보겠습니다.
많은 종류의 서비스를 한 클래스를 만들어서 처리할 게 아니라 Controller라는 중간 제어자를 만들어서 A서비스에 대한것은 A-Controller가 B서비스는 B-Controller 이렇게 역할에 따라 설계를 하고 개발을하면 개발비용이나 유지보수비용이 대폭 줄어들기 때문에 Controller를 사용합니다.

Service가 알맞은 정보를 가공하는 과정을 '비즈니스 로직을 수행한다.' 라고 합니다.
DB의 데이터가 필요할 때는 Repository 에게 요청을 합니다.
규모 프로젝트일 수록 Service의 내용이 비대해집니다.

Entity에 의해 생성된 DB에 접근하는 메서드 들을 사용하기 위한 인터페이스입니다.
쉽게 말해 DB 연결, 해제, 자원을 관리하고 CRUD 작업을 처리합니다.

글 재미있게 봤습니다.