Ba cách gọi HTTP từ Spring app đến external API:
| RestTemplate | WebClient | RestClient | |
|---|---|---|---|
| Model | Blocking | Non-blocking (reactive) | Blocking (fluent) |
| Status | ⚠ Maintenance mode | ✅ Active | ✅ Active (Spring 6.1+) |
| API style | Template method | Fluent builder | Fluent builder |
RestClient (recommended cho Spring MVC):
java
@Bean
RestClient restClient() {
return RestClient.builder().baseUrl("https://api.example.com").build();
}
User user = restClient.get().uri("/users/{id}", 1L).retrieve().body(User.class);WebClient — cùng fluent style nhưng trả Mono/Flux (.retrieve().bodyToMono(User.class)) — cho reactive stack/WebFlux. RestTemplate — style cũ (getForObject(url, User.class)), chỉ maintenance, không dùng cho code mới.
2026: RestClient cho Spring MVC, WebClient cho WebFlux.