일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- HLB
- 해시
- Spring
- Gamsgo
- CodeState 후기
- 금융감독원
- 코드스테이츠 합격 후기
- 백내장 금감원
- 코드스테이츠 백엔드 후기
- 코테 합격후기
- 겜스고
- 코드스테이츠 합격
- 에이치엘비
- 백내장 다초점렌즈 삽입술
- 메서드
- Java
- 코드스테이츠 백엔드 부트캠프 합격
- 코드스테이츠 부트캠프 합격 후기
- codestates 국비지원 1기 합격 후기
- 코드스테이츠 부트캠프
- 코드스테이츠 백엔드 교육과정
- 자바
- Code States 백엔드 합격 후기
- 백내장
- 금감원
- 백준 알고리즘
- 코드 스테이츠 백엔드 교육과정
- 금융감독원 민원신청
- 금감원 백내장 민원
- 보험금 지급거절
Archives
- Today
- Total
개발하는 동그리
[Spring] Spring MVC - API 계층 본문
반응형
서블릿 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타입으로 변환해준다.
- 직렬화
- 클라이언트 요청 ->: DispatcherServlet 클래스에 요청 전달
- DispatcherServle은 요청을 처리할 Controller에 대한 검색을 HandlerMapping 인터페이스에 요청
- HandlerMapping은 클라이언트 요청과 매핑되는 핸들러 객체를 DispatcherServlet에 리턴
- 핸들러 객체는 해당 핸들러의 메서드 정보를 포함
- 핸들러 메서드는 Controller안에 구현된 요청 처리 메서드를 의미
- 클라이언트 요청을 처리할 Handler 메서드를 찾아서 호출해야 하는데, DispatcherServlet은 HandlerAdapter에게 Handler 메서드 호출을 위임
- HandlerAdapter는 전달받은 Controller 정보를 기반으로 해당 Controller의 Handler 메서드를 호출
- Controller의 Handler 메서드는 비지니스 로직 처리후 받은 Model 데이터를 HandlerAdapter에게 전달
- HandlerAdapter는 전달받은 Model 데이터와 View 정보를 다시 DispatcherServlet에 전달
- DispatcherServlet은 전달 받은 View 정보를 다시 ViewResolver에 전달해서 View 검색을 요청
- ViewResolver는 View에 해당하는 View를 찾아서 리턴
- DispatcherServlet은 ViewResolver로부터 받은 View객체를 통해 Model 데이터를 넘겨주면서 클라이언트에게 전달할 응답 데이터 생성을 요청
- View는 응답데이터 DispatcherServlet에 전달
- 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 |