WebClient 란? API를 호출하기 위해 사용되는 Http Client 모듈 중 하나 왜 WebClient 가 필요한가? 현재 Java에서 가장 많이 사용하는 Http Client는 RestTemplate 입니다. 그런데 Spring 5.0 버전부터는 RestTemplate 은 유지 관리 모드로 변경되었습니다. Spring 에서는 RestTemplate 의 대안으로 WebClient 사용을 강력히 권고하고 있습니다. WebClient 는 논블로킹/블로킹 모두 지원합니다. 동작 원리 WebClient 의 동작 원리를 알려면 먼저, RestTemplate 의 동작 원리를 알아야 합니다. RestTemplate Multi-Thread, Blocking 요청 Thread Pool은 애플리케이션 구동 시에 ..
스프링에는 비동기 구현체가 여러가지 있는데 Controller 단에서 간단하게 비동기 요청을 처리할 수 있는 @Callable을 알아보고자 합니다. @Callable ? Spring MVC 3.2부터 추가된 Servlet 3을 기반으로한 비동기 요청 프로세스 - 요청 프로세스 답게 내부(Service단)를 비동기화 시켜주진 않습니다. Callable의 특징 Thread가 Spring MVC 내에서 관리된다.(내부 TaskExecutor) Controller의 RequestMapping method에서 Callable 객체를 감싸서 리턴한다. Callable의 동작 방식 컨트롤러에 요청이 들어오면 값을 반환하는 대신 Callable 을 먼저 반환한다. Spring MVC는 내부 TaskExecutor에게 ..
블럭과 논블럭? 주로 동기와 비동기 와 함께 많이 소개 되는데요,, 이번에 WebClient 를 공부하면서 처음 들어보았습니다. 저는 처음 개념을 접했을 때 동기-블럭, 비동기-논블럭 으로 이해했는데 오산이었습니다. 이번 정리를 통해 앞으로 혼용하는 일을 방지하고자 합니다. 블럭과 논블럭의 차이를 정확히 이해하려면 동기와 비동기를 알고 있어야 합니다. 이 포스팅은 동기와 비동기의 차이를 알고 있다는 전제하여 작성합니다. 블럭 & 논블럭 / 동기 & 비동기 블럭과 논블럭을 구분하는 가장 중요한 핵심은 함수 제어권의 위치 입니다. 예를 들어 함수 실행 순서가 A→B 인 로직이 있습니다. 블럭은 A함수를 호출하고 모든 행위를 마칠 때까지 기다렸다 종료되면 B함수를 호출합니다. 논블럭은 A함수를 호출하고 A함수..