PROGRAMMATION
RÉACTIVE AVEC SPRING
BOOT 3
20/11/2023
Plan
01 Introduction Springboot
02 La programmation réactive
03 Programmation réactive VS non réactive
04 Avantage - Incovénients de la programmation réactive
05 Stratégie de gestion des erreurs
06 Spring Web Flux
07 Création du projet
08 Conclusion
2
Introduction
Spring Boot est un framework conçu
pour simplifier le développement
d'applications Java. Il offre un
environnement prêt à l'emploi,
réduisant la configuration nécessaire
pour démarrer un projet.
Image 1
3
Programmation réactive
La programmation réactive est un paradigme de
développement logiciel centré sur la création
d'applications capables de gérer efficacement
les flux de données asynchrones.
Image 2
4
Image 3
Image 2
5
Flux de données
Un flux, dans le contexte de la programmation
réactive, désigne une séquence continue
d'événements qui se produit dans le temps.
Ces flux peuvent émettre trois types principaux
d'événements :
Valeur
Erreur
Signal de "terminé"
Image 4
6
Observateur/Observable en Programmation
Réactive
Observable
Des sources de données dynamiques représentant
tout ce qui évolue au fil du temps. Ils émettent
des éléments à des instants variés, formant ainsi
un flux de données en constante évolution.
Observateurs
Des composants du code qui réagissent aux
événements émis par les observables.
Image 5
7
Backpressure
Le Backpressure se réfère à la gestion de la
quantité de données.
Il permet à l'observateur de demander à
l'observable de ralentir ou de contrôler la
production de données pour éviter toute
surcharge ou perte de données lorsque le
Image 6
récepteur ne peut pas traiter les données aussi
rapidement qu'elles sont émises.
8
Programmation réactive VS Programmation
non réactive
Caractéristiques Programmation réactive Programmation non réactive
Basé sur un modèle traditionnel, souvent
Axé sur la réactivité, les flux de données
Modèle de Programmation séquentiel et orienté sur les opérations
asynchrones et les opérations non bloquantes.
bloquantes.
Limite du nombre de demandes simultanées au
Capacité de Traitement des Capable de gérer un grand nombre de demandes nombre de threads dans le pool, risque de
Requêtes simultanées sans bloquer le fil d’exécution,. ralentissements ou de rejets de demandes si le
pool est saturé.
Utilise généralement moins de mémoire grâce à la Peut entraîner une utilisation excessive de la
Utilisation de la Mémoire gestion efficace des threads et à l'utilisation mémoire si des threads sont bloqués en
d'opérations non bloquantes. attendant des E/S ou des opérations longues.
Tableau 1
9
Les avantages de la programmation
réactive
Réactivité en temps Gestion asynchrone Compatibilité
Réel des événements multiplateforme
Réagit instantanément aux Permet de gérer efficacement les Les concepts de programmation
événements et aux changements, événements asynchrones. Elle offre réactive peuvent être appliqués dans
offrant des interfaces utilisateur des outils pour traiter les différents environnements de
plus dynamiques et une meilleure événements et les changements de développement, y compris sur le
expérience utilisateur. manière efficace et sans bloquer le Web, les applications mobiles, les
programme. systèmes embarqués ..
10
Les inconvénients de la programmation
réactive
Complexité accrue Intégration avec des Difficulté de débogage et
de l'écriture du code bibliothèques ou des de traçabilité
La programmation réactive
systèmes existants Comme les opérations sont
introduit des concepts nouveaux Les composants ou bibliothèques asynchrones et basées sur des flux de
tels que les flux de données, les ne sont pas nécessairement conçus données, le débogage peut être plus
opérations asynchrones... Pour ceux pour être compatibles avec un complexe. Suivre la logique du flux
qui ne sont pas familiers avec ces modèle réactif, ce qui peut de données ou des événements peut
concepts, écrire du code réactif entraîner des problèmes être difficile, ce qui rend le débogage
peut être plus complexe. d'intégration et de compatibilité. et la traçabilité des problèmes plus
complexes.
11
Stratégies de Gestion des Erreurs dans les
Applications Réactives
Propagation des Erreurs Traitement des Erreurs Répétition des Opérations
Les erreurs sont propagées le long de Les observateurs peuvent gérer les Certaines bibliothèques réactives
la chaîne du flux de données. erreurs en utilisant des méthodes offrent des mécanismes pour répéter
Lorsqu'une erreur survient dans un spécifiques fournies par les les opérations qui ont échoué en
flux, elle est transmise aux bibliothèques réactives. raison d'une erreur temporaire,
observateurs. Cela permet de gérer les onError(Throwable error) offrant ainsi une approche de
erreurs rapidement et de prendre des doOnError(Consumer<Throwable> récupération des erreurs.
mesures appropriées. onError) ReactiveX.
12
Spring WebFlux
Spring WebFlux est un framework réactif conçu pour
le développement d'applications basées sur des
principes réactifs dans l'écosystème Spring de Java. Il
propose une approche réactive pour la création
d'applications Web, permettant de gérer
efficacement les flux de données asynchrones.
Image 7
13
Flux et Mono dans Spring WebFlux
Mono Flux
Représente un résultat unique, Représente une séquence de zéro à
une erreur, ou aucun résultat. plusieurs éléments émis de manière
asynchrone.
Image 8 Image 9
14
Exemples d’operateurs dans Spring WebFlux
Opérateurs Programmation réactive
Map Modification des éléments du flux
Filter Filtrage des éléments du flux
FlatMap Transformation et émission de flux imbriqués
Zip Combinaison de plusieurs flux en un seul flux
Merge Fusion de plusieurs flux en un seul flux
Tableau 2
15
Création de l’application
réactive
Image 11
Image 10
16
Conclusion
17
Source
Textes et tableaux : Chatgpt
Image 1 : https://www.tutorialandexample.com/spring-boot-architecture
Image 2 : https://blog.ouidou.fr/la-programmation-r%C3%A9active-12f342cef911
Image 3,4,6 : https://fr.slideshare.net/AhmedAbdulAziz47/reactive-programming-intro
Image 5 : https://www.youtube.com/watch?v=WTZOGQYsdqE&t=560s
Image 7 : https://www.youtube.com/watch?v=WTZOGQYsdqE&t=560s
Image 8,9 : https://blog.knoldus.com/reactive-programming-using-spring-mvc-and-webflux/
Image 10,11 : https://start.spring.io/;
18
Merci pour votre
attention !