3Layer Architecture
Spring은 Controller, Service, Repository 3개로 분리하고 각 계층에 따라 역할을 분리하여 개발을 진행하도록 했습니다.
![](https://velog.velcdn.com/images/kimtahwn/post/1d1995e1-a036-4801-9973-67d6cc589a77/image.png)
각 Layer에 따라 관심을 갖고 있는 부분이 다르며, 상위 Layer에서 하위 Layer로만 컨트롤을 할 수 있습니다.
즉, Conroller -> Service로 조작이 가능하지만, Service -> Controller로의 조작은 불가능합니다.
Presentation Layer, Controller
![](https://velog.velcdn.com/images/kimtahwn/post/db61b03c-9777-4517-81ce-cd17df41dec0/image.png)
역할
- 클라이언트의 요청을 받습니다.
- 요청에 대한 로직 처리는 Service에게 전담하며, Request 데이터가 있다면 Service에 같이 전달합니다.
- Service에서 처리 완료된 결과를 클라이언트에게 응답합니다.
- 클라이언트의 요청 중 예외를 처리합니다.
Business Layer, Service Layer
![](https://velog.velcdn.com/images/kimtahwn/post/c5b32f75-f6f2-4ff3-a435-604a4d89c4a8/image.png)
역할
- 클라이언트의 요구사항을 처리합니다.
- DB의 저장 및 조회 등이 필요할 때는 Repository에게 요청합니다.
(직접적인 접근 X)
Repository Layer
![](https://velog.velcdn.com/images/kimtahwn/post/3e27958a-6a4c-4a8c-95e7-989ad4de3736/image.png)
역할
reference
https://jurogrammer.tistory.com/78