Spring Framework 는 다양하게 Http 요청 방식을 지원하고 통신을 제공한다.
3가지 방식에 대해서 간단히 작성해볼것이다.
Http 통신 에 대한 내용은 아래 참고 포스팅을 참고 바란다.
1. RestTemplate
RestTemplate은 Spring Framework에서 제공하는 동기식 HTTP 통신을 위한 클라이언트
RestTemplate은 주로 Spring MVC 기반의 애플리케이션에서 사용되며, 다양한 HTTP 메서드(GET, POST, PUT, DELETE 등)를 지원하고 JSON, XML 등 다양한 형식의 데이터를 처리할 수 있음
RestTemplate restTemplate = new RestTemplate(); String url = "https://thenicesj.tistory.com/"; Member mem = restTemplate.getForObject(url, Member.class, 1); |
RestTemplate은 동기식으로 동작하기 때문에, 응답을 받을 때까지 대기하며 스레드를 차단하기에 대량의 요청을 처리할 때는 성능 이슈가 발생할 수 있음.
2. WebClient
WebClient는 Spring Framework 5부터 도입된 비동기식 HTTP 통신을 위한 클라이언트(동기식 처리도 가능)
WebClient는 Non-Blocking I/O 모델을 기반으로 하며, 비동기 및 리액티브 스트림 처리를 지원하고 WebClient는 RestTemplate의 대안으로 제공되며, 더 나은 확장성과 성능을 제공
WebClient webClient = WebClient.create(); String url = "https://thenicesj.tistory.com/"; Mono<Member> memberMono = webClient.get() .uri(url, 1) .retrieve() .bodyToMono(Member.class); |
WebClient는 비동기 작업을 수행하며, 리액티브 타입인 Flux와 Mono를 반환하여 비동기 결과 처리를 용이하게 하기에 대량의 요청을 처리할 때 성능과 확장성 면에서 효과적
3. OpenFeign
Openfeign 에 대해서는 참고 포스팅을 참고 바란다.
별도로 적어둔 포스팅에서 설명이 가능하다.
참고 포스팅
https://thenicesj.tistory.com/809
https://thenicesj.tistory.com/469
'IT > Java' 카테고리의 다른 글
deleteAll(), deleteAllInBatch(), deleteInBatch() (22) | 2024.01.26 |
---|---|
ThreadPoolExecutor 로 멀티 쓰레드 구현 (24) | 2024.01.21 |
JPA메서드 save 와 saveAll 비교 (11) | 2024.01.19 |
Servlet 이란? (JSP 와 비교) (28) | 2024.01.17 |
RequestEntity 란 (20) | 2024.01.13 |
댓글