Spring - Controller, Service, Repository

yuns·2022년 10월 3일
1

Spring

목록 보기
7/13
post-thumbnail

웹사이트의 흐름

  1. 클라이언트가 요청을 보냄
  2. Controller가 요청을 받고, 요청 처리를 위해 Service 호출
  3. Service가 알맞은 정보를 가공함
  4. 이와중에 Repository도 db에 접근하여 데이터를 처리
  5. 처리된 정보를 Controller에게 전달
  6. Controller가 전달된 정보를 다시 클라이언트에게 전달

MVC 패턴

Model, View, Controller로 분리하여 각각의 역할만을 하게 하는 디자인패턴

모델 : 데이터와 비즈니스 로직을 관리
뷰 : 레이아웃, 화면을 처리
컨트롤러 : 모델과 뷰에게 명령을 전달

이러한 관심사 분리를 통해 유지보수성, 확장성, 유연성이 증가한다.


Controller

가장 바깥 부분, 요청을 받고 응답을 되돌려준다

Controller 사용 시 장점

  • HTTP request, response를 위한 중복 코드를 생략할 수 있다.

  • Servlet은 요청과 응답을 수행하는 코드를 직접 만들어줘야하지만, Controller는 annotation을 이용해 간편하게 처리할 수 있다.

  • api이름마다 파일을 만들 필요가 없다


Service

중간 부분, 사용자의 요구사항 처리 (비즈니스 로직), db정보 필요 시 Repository에 요청


Repository

가장 안쪽 부분, DB와 직접 소통해서 자료를 생성, 조회, 변경, 삭제함

db관리, db CRUD 작업

프로젝트를 진행할 땐 가장 안쪽인 repository부터 가장 바깥인 controller 순서로 작성한다.


Controller과 Service, Repository를 분리해서 사용하는 이유

Service와 Repository를 따로 만들지 않아도, Controller에서 모든 응답을 처리 할 수 있다.

하지만 굳이 나눠서 사용해야 하는 이유는 무엇일까?

Controller에 몰아서 작성하면 안좋은 이유

  • 한 개의 클래스에 너무 많은 양의 코드 존재. 코드 이해가 어려워짐
  • 코드 추가 혹은 변경 요청이 생길 때, 모듈화가 되어있으면 변경이 쉬움
  • 객체지향 프로그래밍에 맞지 않음. controller는 controller만의 일을 하는 것이 중요

0개의 댓글