[여기에 적은 거는 강의 내용을 다 적은게 아니라서 강의자료 보면서 이 게시글 참고하자.]
[스프링 심화 강의 1주차 12강 AllInOneController 의 역할 분리]
- springCore 프로젝트에서 실습
- 막간지식 : '자바 클래스명'과 '자바 파일 이름' 일치 해야 함
Controller, Service, Repository 역할
서버 개발자들은 서버에서의 처리과정이 대부분 비슷하다는 걸 깨닫고,
처리 과정을 크게 3개로 분리했습니다.
스프링에서 이미 구분해서 사용해 본적 있던 Controller, Service, Repository 입니다.
각 역할 별로 하는 일을 정리해 보죠.
1. Controller
- 클라이언트의 요청을 받음
- 요청에 대한 처리는 서비스에게 전담
- 클라이언트에게 응답
2. Service
- 사용자의 요구사항을 처리 ('비즈니스 로직') 하는 실세 중에 실세!!!
- 현업에서는 서비스 코드가 계속 비대해짐
- DB 정보가 필요할 때는 Repository 에게 요청
- Service는 DB정보가 필요하면 본인이 직접하는 것이 아니라 Repository에게 그 역할을 맡긴다.
DB에 관련된 역할은 Repository가 하고 그 결과를 가지고 와서 처리를 해주는 역할을 한다.
3. Repository
- DB 관리 (연결, 해제, 자원 관리)
- DB CRUD 작업 처리
전체적인 그림
- 전체적으로 보면
클라이언트에서 Controller로 Request가 가게 되면
-> Controller는 Service에게 역할 처리를 맡기고
-> 우리 실세 Service는 클라이언트 요청을 직접적으로 처리하는 역할을 하다가 DB에 관련된 역할이 필요하거나 DB정보가 필요하거나 (예시. DB 관심 상품)을 저장하거나 업데이트하거나
-> 이럴 때 Repository를 부른다.
[Repository에서 DB와의 연결을 가지고 처리를 한 뒤에 결과를 보내주면 그거를 우리 Service 실세가 모두 다 처리를 한 뒤에 그 다음에 Controller에게 그 결과를 보내준다.]
-> 그러면 Controller는 그걸 가지고 클라이언트에게 Response로 보내준다.
Quiz
아래 AllInOneController 의 순차적인 흐름에서 Controller, Service, Repository 기능을 구분해 보세요. 아래 그림을 다운로드 받아 각 역할 별로 체크해 보거나, 역할 별로 머릿 속으로 떠올려봐도 좋습니다. 중요한 건 아래 정답을 보지 않고 스스로 각 역할 별로 기능을 구분해 내는 노력을 해보는 것입니다.
내가 해본거
- 좀 틀렸다...
Quiz 정답
축하드립니다! 여러분은 스프링의 핵심에 한 발짝 가까이 가게 되었습니다. 스프링 프레임워크는 "객체지향" 설계 원칙을 잘 준수하여 설계되어 있기 때문입니다.
1) Controller
- 요청받고 응답하기
2) Service
- Service는 실세라서 Repository에게 역할을 시킨다.
- 전체적으로 Controller가 하는 역할 외에 다른 부분들은 사실 Service가 크게 맡고 있다.
- 굳이 나눠보자면 파란색 부분만 Service가 하고 있다.
-> 하지만 잊지 말아야 할 거 현업에서는 Service의 역할이 이거보다 훨씬 더 많다. 그리고 계속해서 증가해 나간다.
이 점을 유념하자
3) Repository
'JAVA' 카테고리의 다른 글
TIL_항해99_19일차 (0) | 2022.05.28 |
---|---|
[JAVA/SpringBoot] 객체 중복 생성 문제 해결 (1-14) (0) | 2022.05.27 |
[JAVA/SpringBoot] AllInOneController 의 문제점 (1-11) (0) | 2022.05.27 |
[JAVA/SpringBoot] 관심상품 등록 API 구현하기 (1-10) (0) | 2022.05.27 |
[JAVA/SpringBoot] 스프링 심화 강의 1주차(1-9) (0) | 2022.05.27 |