Spring Boot 기본 구조

지쥬·2024년 11월 19일
0

SpringBoot

목록 보기
1/3
post-thumbnail

Spring Boot 기본 구조

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

<Controller는 쇼핑몰의 웹사이트, Service는 가게의 직원, Repository는 물건을 보관하는 창고와 같은 역할>

Controller

역할

Controller는 클라이언트로부터 들어오는 HTTP 요청을 처리하고, 적절한 서비스를 호출하여 응답을 생성한다.

작동 방식

  • 클라이언트가 브라우저 또는 API 클라이언트를 통해 HTTP 요청을 보낸다.
    이 요청은 Spring Boot의 내장 웹 서버(예: Tomcat)에 의해 받아들여지며, 적절한 Controller로 라우팅된다.
  • Controller는 주로 @RestController 또는 @Controller 어노테이션이 붙은 클래스로 정의된다.
  • 특정 URL 패턴과 매핑된 메서드는 @GetMapping, @PostMapping 등과 같은 어노테이션으로 정의되며, 이 메서드가 요청을 처리한다.
  • Controller는 Service 계층을 호출하여 비즈니스 로직을 처리한 후, 그 결과를 HTTP 응답으로 변환하여 클라이언트에 반환된다.

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 응답으로 변환하여 클라이언트에 반환한다.

0개의 댓글