web-dev-qa-db-fra.com

WebClient vs RestTemplate

Au printemps 5:

WebClient est une interface représentant le point d'entrée principal pour l'exécution de requêtes Web.

Il a été créé dans le cadre du module Spring Web Reactive et remplacera le modèle classique RestTemplate dans ces scénarios. Le nouveau client est une solution réactive, non bloquante, qui fonctionne sur le protocole HTTP/1.1.

Cela signifie-t-il que nous devons recoder les anciennes applications utilisant RestTemplate si nous souhaitons mettre à niveau vers Spring 5?

Ou existe-t-il une solution de contournement pour utiliser RestTemplate au printemps 5?

27
KayV

Non, RestTemplate continuera d'exister (du moins pour l'instant). Vous n'êtes pas obligé de le remplacer par WebClient.
L’une des principales différences est que RestTemplate est synchrone et bloquant. Autrement dit, lorsque vous faites une pause, vous devez attendre le retour de la réponse pour continuer.

Mais WebClient est complètement opposé à cela. L’appelant n’a pas besoin d’attendre la réponse. Au lieu de cela, il sera averti lorsqu'il y aura une réponse.

Si vous avez besoin d'une telle fonctionnalité, alors oui, vous devez remplacer votre Resttemplate par WebClient.
Vous pouvez impliquer un modèle Rest comme le traitement synchrone dans le client Web en utilisant .block(). Mais l'inverse n'est pas possible.

33
pvpkiran

Selon Java Doc , RestTemplate sera obsolète. Les équipes de Spring conseillent d’utiliser WebClient si possible:

REMARQUE: à partir de la version 5.0, org.springframework.web.reactive.client.WebClient, réactif et non bloquant, offre une alternative moderne à RestTemplate avec une prise en charge efficace des scénarios de synchronisation, asynchrone et en continu. RestTemplate sera obsolète dans une version ultérieure et aucune nouvelle fonctionnalité majeure ne sera ajoutée à l'avenir.

30
Evgeni Dimitrov