스프링과 스프링부트는
레이어드 아키텍쳐 패턴이 REST 아키텍쳐 스타일을 이용하는데 도움이 되는 어노테이션을 제공한다.
😦 레이어드 아키텍쳐 패턴
- Spring, SpringBoot 프로젝트 진행 시, 코드 분리/관리에 대한 방법론
- 애플리케이션 구성 요소들을 수평으로 나눠서 관리함
- 프레젠테이션, 비즈니스, 퍼시스턴스, 데이터베이스로 나눠짐
😦 REST 아키텍쳐 스타일
- Representational State Transfer
- 브라우저(클라) 가 서비스 이용 시 요청, 응답을 어떤 형식으로 해야 하는지에 대한 방법론
- 클라는 정해진 몇 개의 메소드로 서비스를 이용함
😦 RESTful 서비스
- REST 아키텍쳐 스타일을 따라 설계 및 구현된 서비스
레이어드 아키텍쳐 패턴
레이어드 아키텍쳐 패턴은
SpringBoot 프로젝트를 진행하며
간단한 CRUD 패턴을 만들 때 접하게 된다.
😰 주의해야 할 점
1. 나눠진 레이어는, 코드 구현 시 하나의 클래스, 하나의 메소드 안에 전부 구현해야 한다.
예를들어
게시판을 수정하는 메소드를 컨트롤러에 구현한다고 하면,
editBorder(){} 메소드 안에 수정과 관련된 모든 코드를 구현해야 한다.
2. 레이어는 인접한 레이어만 사용 가능하다.
컨트롤러는 서비스를 AutoWierd 할 수 있지만, 레파지토리를 AutoWierd 하면 안된다.
❕ 프레젠테이션 레이어: Controller 클래스
사용자의 요청이 진입하는 지점
요청에 따라 어떤 처리를 할지 결정함
결정한 처리를 응답으로 보내줌 (View, RestApi)
❕ 비즈니스 레이어: Service 클래스
컨트롤러와 레파지토리 사이에서 비즈니스 로직을 수행
❕ 퍼시스턴스 레이어: Repository 클래스 (JPA 상속)
서비스가 비즈니스 로직을 수행할 때 필요한 데이터들을 db에서 꺼내옴
서비스가 비즈니스 로직을 수행 후 변경된 데이터들을 db에 저장함
처음 이 개념들을 접했을 때 이해하기가 어려웠는데, 식당으로 생각하니까 좀 와닿았다.
손님(클라) 가 웨이터(Controller) 에게 김치찌개를 요청(request) 했고,
주문을 받은 웨이터(Controller) 는 요리사(Service) 에게 김치찌개 만드는걸 요청한다.
요리사(Service) 는 심부름꾼(Repository) 에게 김치를 갖다달라고 했고
심부름꾼(Repository) 은 냉장고(DB) 에서 김치를 찾아서 갖다준다.
요리사(Service) 가 요리를 끝내고 웨이터(Controller) 에게 반환하면
웨이터(Controller) 가 감치찌개를 손님(클라) 에게 갖다준다(response).
출처:
(책) React.js, 스프링부트, AWS 로 배우는 웹 개발 101
(블로그) https://hardlearner.tistory.com/315
(강의) 홍팍님 https://www.youtube.com/watch?v=HAlcc-HMz7k&list=PLyebPLlVYXCiYdYaWRKgCqvnCFrLEANXt
댓글