일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Kafka
- JPA 공부
- JPA공부
- 코테공부
- 코테준비
- JPA예제
- nestjs스터디
- JPA
- K8S
- Axon framework
- 스프링
- querydsl
- JPA스터디
- 기술공부
- nestjs공부
- 스프링 공부
- 자료구조공부
- 스프링공부
- 플러터 공부
- 기술면접공부
- 카프카
- 자바공부
- 알고리즘공부
- 프로그래머스
- nestjs
- 스프링부트공부
- DDD
- 스프링부트
- 플러터 개발
- Flutter
- Today
- Total
DevBoi
[Spring] RestTemplate 본문
RestTemplate이란?
Spring 3.0에서부터 지원하는 RestTemplate은 Http 통신에 유용하게 쓸 수 있는 템플릿이다.
Rest 서비스를 호출하도록 설계되어 HTTP 프로토콜 메서드에 맞게 여러 메서드를 제공한다.
특징
-통신을 단순화 하고 RestFul 원칙을 지킨다.
-멀티쓰레드 방식을 사용한다.
-블라킹 방식을 사용한다.
RestTemplate의 구동방식
쓰레드 풀은은 요청자 어플리케이션 구동시에 만들어진다.
Request 는 먼저 큐에 쌓이게 되고 가용한 쓰레드가 있으면, 스레드에 할당되어 처리된다.
1 요청당 1스레드가 할당 된다.
스레드에서는 블로킹 방식으로 처리되어, 응답이 올때까지 해당 스레드는 다른 요청에 할당 될 수 없다.
정확한 동작 방식
1. 어플리케이션이 RestTemplate을 생성하고 URI,HTTP 메소드 등의 헤더를 담아 요청한다.
2. RestTemplate는 HttpMessageConverter를 사용하여 requestEntity를 요청 메시지로 반환한다.
3. RestTemplate은 ClientHttpRequestFactory로 부터 ClientHttpRequest를 가져와서 요청을 보낸다.
4. ClientHttpRequest는 요청메시지를 만들어 Http프로토콜을 통해 서버와 통신
5. RestTemlate 는 ResponseErrorHandler로 오류를 확인하고 있다면 처리로직을 태움
6. ResponseErrorHandler는 오류가 있다면 ClientHttpResponse에서 응답데이터를 가져와서 처리한다.
7. RestTemplate은 HttpMessageConverter를 이용해서 응답메시지를 java Object로 변환한다.
쉽게 얘기하면, restTemplate의 메소드를 이용해서, 방식과 Request메시지 문, HttpEntity를 생성하여서 전송하고
응답을 받아서 return 해주는 역할을 하는 메소드를 제공해준다.
이때 req를 요청 메시지로 변환하거나 응답을 java object로 변환해주는 건 HttpMessageConverter가 해준다.
'Develop > [Spring]' 카테고리의 다른 글
[Spring] 웹 통신 , 스프링 동작 과정 (0) | 2022.04.08 |
---|---|
[Spring] WebClient (0) | 2022.03.30 |
[Spring] Dao와 repository 차이 (0) | 2022.03.28 |
[Spring] Hikari란 (0) | 2022.03.28 |
[Spring] Transactional (0) | 2022.03.28 |