관리 메뉴

개발하는 동그리

[Spring] Spring MVC - API 계층 본문

IT 정보/Spring

[Spring] Spring MVC - API 계층

개발하는 동그리 2022. 7. 4. 11:00
반응형

서블릿 API를 Spring MVC 프레임 워크라고 부른다. 

  • Spring MVC는 클라이언트의 요청을 편하게 처리해주는 프레임워크다

 

Servlet

  • 클라이언트의 요청을 처리하도록 특정 규약에 맞춰서 java로 작성하는 클래스 파일 
  • (서블릿)아파치 톰캣 = 애플리케이션의 실행을 도와주는 커블릿 컨테이너 중 하나
  • Spring MVC 내부에서 서블린 기반으로 애플리케이션이 작동중이다. 

Model

  • 클라이언트의 요청을 처리한 후의 결과 데이터
  • 요청 사항을 구체적으로 처리하는 영역을 서비스 계층이라 한다. 
  • 실제 요청사항을 java코드로 구현한 것을 비지니스 로직이라고 한다. 

View

  • Model데이터를 이용해서 클라이언트 애플리케이션 화면에 보여지는 리소스를 제공
  • HTML 페이지 출력
  • PDF,Excel 문서 형태 출력
  • XML, JSON 특정형식 포멧으로 변환

Controller 

  • 클라이언트의 요청을 직접 받는 엔드포인트 
  • Model과 View 중간에서 상호작용
    • 클라이언트 요청 받음
    • Model 데이터를 View로 전달
    • @GetMapping 사용 : 클라이언트의 요청을 수신
  • @RestController
    • REST API의 리소스를 처리하기위한 API 엔드포인트로 동작하는 것을 정의
    • 위 애너테이션이 붙으면 Spring Bean에 등록
  • @RequestMapping
    • 클라이언트의 요청과 HandlerMethod를 매핑하는 역활
    • 클래스 전체에 사용되는 공통 URL 설정

HandlerMethod 종류

  • @PostMapping : 리소스 생성
  • @GetMapping : 서버의 리소스를 조회

ResponseEntity

  • ResponseEntity객체 리턴을 통해 new ResponseEntity<>(map,HttpStatus.CREATED); 와 같이 생성자 파라미터 응답데이터(map)와 HTTP 응답 상태를 전달할 수 있다. 

DTO (Data Transfer Object)

  • HandlerMethod마다의 파라미터 갯수가 많아지면서 Controller 클래스에 포함되어 있는 내용을 DTO클래스를 생성함으로써 DTO클래스로부터 요청 데이터를 전달받는 것
  • DTO 객체를 사용함으로써 데이터의 유효성 검사가 단순화된다. (@Valid 애너테이션 필수)
    • build.gradle -> dependencise 항목 추가 
implementation 'org.springframework.boot:spring-boot-starter-validation'
  • HTTP요청의 수를 줄이기 위함
  • 도메인 객체와의 분리

@RequestBody

  • JSON 형식의 Request Body를 DTO 클래스 객체로 바꿔주는 것 ( 요청 (JSON타입) -> DTO (객체타입) 변환 )
  • 역직렬화

@ResponseBody

  • @RequestBody와 반대 : DTO 클래스 객체타입 -> JSON 형식으로 변환 
  • RequestEntity 클래스를 사용할 경우 내부적으로 HttpMessageConvert가 동작해서 JSON타입으로 변환해준다. 
  • 직렬화

 

 

 

 

Spring MVC 동작 방식 및 구성요소

 

  1. 클라이언트 요청 ->: DispatcherServlet 클래스에 요청 전달
  2. DispatcherServle은 요청을 처리할 Controller에 대한 검색을 HandlerMapping 인터페이스에 요청
  3. HandlerMapping은 클라이언트 요청과 매핑되는 핸들러 객체를 DispatcherServlet에 리턴
    • 핸들러 객체는 해당 핸들러의 메서드 정보를 포함 
    • 핸들러 메서드는 Controller안에 구현된 요청 처리 메서드를 의미
  4. 클라이언트 요청을 처리할 Handler 메서드를 찾아서 호출해야 하는데, DispatcherServlet은 HandlerAdapter에게 Handler 메서드 호출을 위임
  5. HandlerAdapter는 전달받은 Controller 정보를 기반으로 해당 Controller의 Handler 메서드를 호출
  6. Controller의 Handler 메서드는 비지니스 로직 처리후 받은 Model 데이터를 HandlerAdapter에게 전달
  7. HandlerAdapter는 전달받은 Model 데이터와 View 정보를 다시 DispatcherServlet에 전달
  8. DispatcherServlet은 전달 받은 View 정보를 다시 ViewResolver에 전달해서 View 검색을 요청
  9. ViewResolver는 View에 해당하는 View를 찾아서 리턴
  10. DispatcherServlet은 ViewResolver로부터 받은 View객체를 통해 Model 데이터를 넘겨주면서 클라이언트에게 전달할 응답 데이터 생성을 요청 
  11. View는 응답데이터 DispatcherServlet에 전달
  12. DispatcherServlet은 View로부터 받은 응답 데이터를 클라이언트에게 전달

 

 

반응형

'IT 정보 > Spring' 카테고리의 다른 글

[Spring] Spring MVC - 예외 처리  (38) 2022.07.04
[Spring] Spring MVC - 서비스 계층  (18) 2022.07.04
[Spring] Spring MVC - 데이터 엑세스 계층(1) JDBC  (15) 2022.06.30
[Spring] AOP 기본 개념  (47) 2022.06.21
[Spring] 컴포넌트 스캔  (44) 2022.06.20