본문 바로가기
컴퓨터/Spring

[SpringBoot] 레이어드 아키텍쳐 패턴, Controller Service Repository 가 하는 일

by 버니케이 2022. 3. 18.
반응형

 

 

스프링과 스프링부트는

레이어드 아키텍쳐 패턴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

반응형

댓글