Model, View, Controller로 분리하여 각각의 역할만을 하게 하는 디자인패턴
모델 : 데이터와 비즈니스 로직을 관리
뷰 : 레이아웃, 화면을 처리
컨트롤러 : 모델과 뷰에게 명령을 전달
이러한 관심사 분리를 통해 유지보수성, 확장성, 유연성이 증가한다.
가장 바깥 부분, 요청을 받고 응답을 되돌려준다
HTTP request, response를 위한 중복 코드를 생략할 수 있다.
Servlet은 요청과 응답을 수행하는 코드를 직접 만들어줘야하지만, Controller는 annotation을 이용해 간편하게 처리할 수 있다.
api이름마다 파일을 만들 필요가 없다
중간 부분, 사용자의 요구사항 처리 (비즈니스 로직), db정보 필요 시 Repository에 요청
가장 안쪽 부분, DB와 직접 소통해서 자료를 생성, 조회, 변경, 삭제함
db관리, db CRUD 작업
프로젝트를 진행할 땐 가장 안쪽인 repository부터 가장 바깥인 controller 순서로 작성한다.
Service와 Repository를 따로 만들지 않아도, Controller에서 모든 응답을 처리 할 수 있다.
하지만 굳이 나눠서 사용해야 하는 이유는 무엇일까?