Compétence Technique

Java Spring

Concevoir des applications backend robustes et structurées avec l’écosystème Spring.

Ma définition

Spring est un framework Java largement utilisé pour le développement d’applications backend. Il propose un ensemble d’outils permettant de structurer une application de manière claire, modulaire et maintenable.

Spring Boot simplifie la création d’applications en automatisant une grande partie de la configuration. Il permet de développer rapidement des API robustes en s’appuyant sur des conventions et des composants prêts à l’emploi.

Spring WebFlux, quant à lui, introduit une approche réactive. Contrairement au modèle classique basé sur des traitements bloquants, WebFlux permet de gérer un grand nombre de requêtes de manière asynchrone et non bloquante. Cela le rend particulièrement adapté aux applications nécessitant de hautes performances ou une forte scalabilité.

Éléments de preuve

J’ai utilisé Spring Boot tout au long de mon parcours académique à l’ESIEA quand on avait cours de Java, ce qui m’a permis d’acquérir progressivement une bonne compréhension de ses principes et de son utilisation.

Je peux parler concrètement de mon projet Galactic Airlines, réalisé en quatrième année à l’ESIEA. Ce projet consistait à concevoir une application backend permettant de gérer les réservations d’une compagnie aérienne fictive.

Dans ce contexte, j’ai participé à la mise en place d’une API REST en utilisant Spring Boot. J’ai travaillé sur la structuration de l’application, la création des différentes couches (contrôleurs, services, repositories) ainsi que sur la gestion des entités métiers telles que les clients, les vols ou les réservations.

L’utilisation de Spring Data, notamment avec MongoDB, m’a permis de manipuler les données de manière efficace tout en conservant une bonne lisibilité du code. J’ai pu comprendre concrètement les mécanismes d’injection de dépendances, de séparation des responsabilités et de structuration pour un backend robuste.

Concernant Spring WebFlux, c’est dans le cadre de mon alternance chez AUXASPHERE SAS que j’ai pu le découvrir et l’utiliser dans un contexte professionnel.

Cette technologie faisait partie des outils utilisés au sein de l’application souveraine, qui reposait sur une architecture en microservices.

L’utilisation de WebFlux m’a permis d’aborder un modèle de programmation différent, basé sur l’asynchrone et le non-bloquant. J’ai ainsi été confronté à des concepts comme les flux de données réactifs, la gestion des appels asynchrones et l’utilisation de types spécifiques tels que Mono et Flux. Cette approche m’a demandé de m’adapter à une logique de développement différente de celle utilisée avec Spring Boot classique, notamment en adoptant une manière de raisonner orientée flux de données plutôt que traitements séquentiels.

Cette expérience m’a permis de mieux comprendre les enjeux liés à la performance et à la gestion de nombreuses requêtes simultanées dans des architectures modernes.

Auto-critique

Ayant travaillé sur plusieurs cas avec Spring Boot, je considère aujourd’hui avoir atteint un niveau confirmé, mais pas encore expert.

Concernant Spring WebFlux, je considère avoir un niveau initié.

Avec Spring Boot, je suis capable de concevoir et structurer une application backend de manière claire et maintenable. Je maîtrise les principes fondamentaux du framework, notamment l’architecture en couches (contrôleurs, services, repositories), l’utilisation de Spring Data ainsi que la mise en place d’API REST. Mes différents projets m’ont permis de gagner en autonomie sur ces aspects et de comprendre les bonnes pratiques associées au développement backend avec Spring.

En revanche, mon expérience avec Spring WebFlux reste très faible. J’ai pu en découvrir les principes dans un contexte professionnel, ce qui m’a permis d’appréhender la programmation réactive et les concepts associés.

Cependant, je ne dispose pas encore d’un recul suffisant pour maîtriser pleinement cette approche, manquant surtout de cas de traitement spécifique.

Par ailleurs, même sur Spring Boot, certains aspects avancés méritent encore d’être approfondis. Je pense notamment à la sécurisation des applications avec Spring Security, à la gestion des configurations complexes ou encore à la mise en place de tests plus avancés.

Perspective d'Évolution

J’aimerais faire évoluer mon niveau vers une expertise sur l’écosystème Spring, en consolidant mes acquis sur Spring Boot et en approfondissant progressivement ma maîtrise de Spring WebFlux.

Dans cette optique, j’ai engagé une démarche d’apprentissage structurée, notamment à travers l’étude de l’ouvrage Java Spring : Le socle technique des applications Jakarta EE (édition ENI). Ce support me permet de renforcer ma compréhension des fondements du framework, mais aussi d’aborder des notions plus avancées que je n’ai pas encore eu l’occasion de mettre en pratique en projet.

Je souhaite continuer à progresser à travers la pratique, en développant des projets personnels et en m’exposant à des problématiques variées. C’est en confrontant la théorie à des cas concrets que je pourrai atteindre un véritable niveau d’expertise sur cet écosystème.