Spring Boot

Spring Boot 기본 구조

jizu 2024. 8. 22. 23:16

 

 Spring Boot 기본 구조 

Controller, Service, Repository, DB 가 존재한다. 

 

 Controller 

  • 역할: Controller는 클라이언트로부터 들어오는 HTTP 요청을 처리하고, 적절한 서비스를 호출하여 응답을 생성한다.
  • 작동 방식:
    • 클라이언트가 브라우저 또는 API 클라이언트를 통해 HTTP 요청을 보낸다.
    • 이 요청은 Spring Boot의 내장 웹 서버(예: Tomcat)에 의해 받아들여지며, 적절한 Controller로 라우팅된다.
    • Controller는 주로 @RestController 또는 @Controller 어노테이션이 붙은 클래스로 정의된다.
    • 특정 URL 패턴과 매핑된 메서드는 @GetMapping, @PostMapping 등과 같은 어노테이션으로 정의되며, 이 메서드가 요청을 처리한다.
    • Controller는 Service 계층을 호출하여 비즈니스 로직을 처리한 후, 그 결과를 HTTP 응답으로 변환하여 클라이언트에 반환된다.
<Controller는 쇼핑몰의 웹사이트, Service는 가게의 직원, Repository는 물건을 보관하는 창고와 같은 역할>

Controller는 사용자가 웹사이트에 들어와서 주문을 하는 것과 같다. 사용자가 웹사이트에서 “물건 구매” 버튼을 누르면, 그 요청이 Controller로 간다. Controller는 요청을 받아서, 가게 직원(Service)에게 “이 사람이 이 물건을 사고 싶어해”라고 전달한다.

=> Controller는 사용자가 웹사이트에 입력하는 것(예: 주문)을 받아서 처리하는 역할을 한다.

 

 Service 

  • 역할: Service 계층은 비즈니스 로직을 처리하는 곳이다. 데이터 처리, 계산, 기타 비즈니스 규칙을 실행하며, Repository 계층을 호출하여 데이터베이스와 상호작용한다.
  • 작동 방식:
    • Controller가 서비스 요청을 받으면, Service 계층의 메서드를 호출한다.
    • Service는 주로 @Service 어노테이션이 붙은 클래스로 정의되며, 비즈니스 로직을 캡슐화한다.
    • 서비스 메서드는 비즈니스 로직을 수행하고, 필요 시 Repository 계층을 통해 데이터를 읽거나 쓰는 작업을 한다.
    • 처리 결과를 Controller에 반환하여, 최종적으로 클라이언트에게 응답할 수 있도록 한다.
Service는 가게 직원이다. 이 직원은 고객의 요청을 받고, 그 요청을 처리한다. 예를 들어, 고객이 “이 물건을 사고 싶어요”라고 하면, 직원은 그 물건이 있는지 확인하고, 주문을 처리한다. 직원이 할 일은 “물건이 창고에 있는지 확인하고(DB 확인), 있다면 주문을 처리하고, 없다면 ‘재고 없음’이라고 알려주는 것”이다.

=> Service는 모든 비즈니스 로직을 처리하는 곳이다. “물건을 사고 싶다”는 요청을 받아서, 처리하기 위해 필요한 일을 한다.

 

 DAO(Repository) 

  • 역할: Repository 계층은 데이터베이스와 상호작용하며, 데이터의 CRUD(Create, Read, Update, Delete) 작업을 수행한다.
  • 작동 방식:
    • Repository는 Spring Data JPA와 같은 ORM(Object-Relational Mapping) 기술을 사용하여 데이터베이스에 접근한다.
    • 주로 @Repository 어노테이션이 붙은 인터페이스로 정의되며, JpaRepository와 같은 기본 인터페이스를 확장하여 사용한다.
    • Repository 메서드를 호출하면, 데이터베이스에서 데이터를 조회하거나 저장하는 작업을 수행한다.
    • 이 계층은 데이터베이스와의 직접적인 상호작용을 추상화하여, 상위 계층에서 데이터 접근의 복잡성을 숨긴다.

Repository는 가게의 창고이다. 모든 물건(데이터)이 여기 저장되어 있다. 가게 직원(Service)은 필요한 물건이 있는지 이 창고에 물어본다. 창고에서는 “이 물건이 있습니다/없습니다”라고 대답한다. 이 창고는 물건을 꺼내주기도 하고(데이터를 읽기), 물건을 새로 넣어주기도 하고(데이터 저장), 오래된 물건을 폐기하기도 한다(데이터 삭제).

=> Repository는 데이터베이스와 상호작용하는 곳이다. 데이터를 저장하고, 읽고, 업데이트하고, 삭제하는 역할을 한다.

 

 전체 작동 흐름 

 

1. HTTP 요청이 클라이언트로부터 들어오면, Spring Boot의 Controller가 이 요청을 받아들인다.

2. Controller는 요청을 처리하기 위해 Service 계층의 메서드를 호출한다.

3. Service 계층은 비즈니스 로직을 수행하며, 필요 시 DAO(Repository)를 호출하여 DB와 상호작용한다.

4. Repository 계층은 DB에 접근하여 필요한 데이터를 읽어오거나 저장 작업을 수행한다.

5. Service 계층은 이 데이터를 이용해 비즈니스 로직을 마무리한 후, 결과를 Controller로 반환한다.

6. Controller는 처리 결과를 HTTP 응답으로 변환하여 클라이언트에 반환한다.

'Spring Boot' 카테고리의 다른 글

[Spring Boot] Repository 정리  (0) 2024.10.21
[Spring Boot] Controller 정리  (0) 2024.09.09