
En 2025, j’ai eu l’opportunité de mettre en place Spring Modulith sur une nouvelle application web. Pour partager cette expérience avec mes collègues, j’ai préparé une démonstration live montrant comment intégrer Spring Modulith dans une application Spring Boot.
J’avais besoin pour cela d’une application simple et universelle. Vous commencez à me connaitre : mon choix s’est naturellement porté sur la version canonique de Spring Petclinic.
Pris au jeu, j’ai progressivement enrichi l’application afin d’illustrer plusieurs fonctionnalités clés de Spring Modulith. J’ai ensuite mis ce fork à disposition de la communauté Spring Petclinic dont le code source complet est disponible sur GitHub : spring-petclinic-modulith.
Dans ce billet, je vous propose de découvrir Spring Modulith, puis de suivre pas à pas comment l’application démo Spring Petclinic a été enrichie pour tirer parti de ses fonctionnalités.

Lire la suite…
Conférence : Devoxx France 2025
Date : 17 avril 2025
Speaker : Sébastien Deleuze (Broadcom)
Format : Conférence (45 mn) / Replay YoutubeSébastien est Core Commiter sur Spring Framework. Il intervient également sur des sujets transverses au portfolio Spring : support de Kotlin, null-safety (avec JSpecify) et les sujets d’optimisation. Dans ce talk, il a pour ambition de nous montrer comment améliorer l’efficacité de 80% des applications Spring, que ce soit de nouvelles applications ou des applications Legacy.
Les raisons d’améliorer l’efficacité de nos applications sont multiples :
- Baisser le cout de run des applications
- Développement durable pour diminuer la consommation d’énergie, de mémoire et de CPU
- Optimiser les applications pour les containers (sur le Cloud ou OnPremise)
Pour arriver à nos fins, Sébastien nous propose 3 technologies :
- CDS : techno relativement vieille mais qui s’est améliorée au fil des versions de Java
- AOT cache : Java 24 permet d’utiliser l’AOT cache qui est une version améliorée CDS. Sébastien prédit l’exploision de AOT Cache avec la LTS Java 25
- AOT cache with profiling : technologie expérimentale et prometeuse

Lire la suite…Spring et Quarkus dans le même repository Git, ou presque. Cela vous intrigue ?
Figurez-vous qu’il y’a quelques mois, la lecture du très bon livre Understanding Quarkus 2.x d’Antonio Gongalves m’a donné envie de pratiquer ce framework alternatif à Spring Boot. Et pour apprendre une nouvelle technologie, quoi de plus stimulant que de se fixer un objectif. Je me suis donc donné comme challenge de migrer vers Quarkus l’application démo Spring Boot que je connais bien. Une fois migrée, l’application devait rester iso-fonctionnelle.
A travers leur repo quarkus-petclinic, RedHat avait fait l’exercice avant moi. Malheureusement, l’historique Git a Ă©tĂ© Ă©crasĂ©, ne laissant aucune trace du chemin de migration parcouru. Pendant 3 mois, j’ai donc travaillĂ© sur un nouveau fork que je suis fier de vous prĂ©senter : quarkus-spring-petclinic. AjoutĂ© Ă la communautĂ© Spring Petclinic, ce fork a un double objectif :- Montrer comment migrer une application Spring Boot 3.4 vers Quarkus 3.21, avec le minium d’effort et en modifiant le moins de code possible
- Utiliser les extensions Spring proposĂ©es par Quarkus pour garder un lien avec le monde Spring tout en soulignant l’effort de l’Ă©quipe Quarkus pour supporter Spring, un framework incontournable de l’Ă©cosystème Java
Les extensions Spring pour Quarkus utilisées sont au nombre de quatre : Spring DI, Spring Web, Spring Data JPA et Spring Cache.
Le changement majeur aura été de porter le templating des pages HTML de Thymeleaf vers Qute.Débutant en Quarkus, le code proposé ne respecte peut-être pas toutes les règles de l’art prônées par l’équipe de dév Quarkus. Je m’en excuse par avance. Si vous voulez contribuer et corriger le tir : issue et Pull Request sont les bienvenues.
Le différenciel complet entre la version Spring Boot et la version Quarkus de Petclinic peut-être visualisé sur Github.

Lire la suite…
Cet article explique comment intĂ©grer un chatbot utilisant l’IA gĂ©nĂ©rative dans une application de gestion codĂ©e en Java.
Nous nous appuierons sur le framework Open Source LangChain4j, une adaptation Java de la cĂ©lèbre librairie python LangChain, visant Ă simplifier l’intĂ©gration de grands modèles de langage ( LLM). LangChain4j permet de crĂ©er des agents conversationnels, des assistants virtuels (comme notre chatbot), ou des applications capables d’effectuer des analyses de texte et de rĂ©pondre en fonction de donnĂ©es contextuelles, le tout sans devoir Ă©crire de code complexe et avec un haut niveau d’abstraction. Elle facilite notamment l’utilisation des API des Large Langage Model comme OpenAI et Hugging Face, et propose diffĂ©rents connecteurs pour des bases de donnĂ©es vectorielles, incluant Elasticsearch et Qdrant. Pour accĂ©lĂ©rer son intĂ©gration, LangChain4j propose des extensions pour Quarkus et des starters pour Spring Boot.
Pour illustrer cet article, nous utiliserons l’illustre application démo Spring Petclinic et son récent fork dédié à LangChain4j : spring-petclinic-langchain4j
Propulsé par Spring Boot, Spring Petclinic s’appuie sur Spring Data JPA pour l’accès aux données et Thymeleaf pour la couche présentation HTML / CSS / JavaScript.
En septembre 2024, Oded Shopen, contributeur en 2020 du fork Spring Petclinic Cloud, a proposé une intégration de Spring AI dans Spring Petclinic. De son travail, est né le projet spring-petclinic-ai. Le repository spring-petclinic-langchain4j est un portage du framework Spring AI vers LangChain4j. Y a été ajouté notamment une fonctionnalité de streaming.
Extraits du sample, les exemples de code s’appuient sur les versions 3.3 de Spring Boot et 0.35.0 de LangChaing4j.
Lire la suite…
De Java EE Ă Jakarta EE
En 2017, Oracle a fait don de la spécification Java EE (précédemment connu sous le nom de J2EE) à la fondation Eclipse. Java EE regroupe différentes API utilisées aussi bien par des serveurs d’applications, des containers de servlets et des frameworks comme Quarkus ou Spring : Servlet, JSP, JSF, JPA, JTA, JAX-WS, JAX-RS, JAXB, WebSocket, Bean Validation, CDI, EL …
Sous l’égide d’Eclipse, Java EE a été rebaptisé Jakarta EE. La fondation a récupéré la base de code Java et les TCK. En 2019 est sortie une version Jakarta EE 8 pleinement compatible avec Java EE 8. Comme seul changement notable pour les dév , le groupId des artefacts Maven a été renommé de javax à jakarta. Le patch du numéro de version a été incrémenté. A titre d’exemple, l’artefact
jakarta.faces:jakarta.faces-api:2.3.1est identique Ăjavax.faces:javax.faces-api:2.3. Pas si anodin, ce changement de GAV Maven fait que notre outil de build peut ĂŞtre amenĂ©, via le mĂ©canisme de dĂ©pendances transitives, Ă placer dans le classpath deux mĂŞmes artefacts ayant des groupId diffĂ©rents. Les exclusions maven permettent de corriger le tir.En dĂ©cembre 2020, la communautĂ© Java est secouĂ©e par la sortie de Java EE 9. 20 ans de rĂ©trocompatibilitĂ© s’écroulent. Oracle a souhaitĂ© conserver la marque Java. Les packages
javax.*de la spécification Java EE ont été renommés enjakarta.*. Certains sous-packages ont également été renommés.Pour exemple, la classe
Marshallerde l’API JAXB change de package : dejavax.xml.bind.Marshallerversjakarta.xml.bind.Marshaller.
Lire la suite…
Le live coding qui rendra vos applications plus pérennes
Conférence : Devoxx France 2024
Date : 19 avril 2024
Speakers : Julien Topçu ( Shodo)
Format : Conférence (45mn)
Repo GitLab : https://gitlab.com/beyondxscratch/hexagonal-architecture-java-springboot
Vidéo Youtube : https://www.youtube.com/watch?v=-dXN8wkN0ykCette session de live coding se déroule dans l’univers de Starwars et commence par une citation de Maitre Yoda.
En 45mn, Julien doit développer le système Rebels Rescue visant à reconstituer des flottes de sauvetage. N’en déplaise à l’Empire, les technos seront Spring Boot et Java 21.
A cet effet, il s’appuiera sur l’API publique SWAPI permettant d’accéder à un référentiel de vaisseaux à disposition. L’application sélectionne les vaisseaux qui permettent d’effectuer la mission de sauvetage. Le code source est disponible dans le repo GitLab de Julien : hexagonal-architecture-java-springboot
Julien commence par rappeler les inconvénients d’une architecture 3-tiers basée sur le triptyque Contrôleur -> Service -> Persistance
Lire la suite…16 prises de notes à Devoxx France 2023
16 April 2023 · 2 mins de lecture · accelerate architecture cache clean-code crac craft devoxx docker graalvm java spring-boot sécurité ·
En attendant de pouvoir tester les 2 étages du Palais des Congrès du 17 au 19 avril 2024, je consigne dans ce billet 16 notes prises au cours de ces 3 jours toujours aussi riches.
D’ici quelques jours / semaines, après un repos bien mĂ©ritĂ© des organisateurs, l’intĂ©gralitĂ© des vidĂ©os des keynotes, confĂ©rences et universitĂ©s prĂ©sentĂ©es lors de Devoxx France 2023 seront disponibles sur Youtube sur la chaĂ®ne Devoxx FR. Mes notes pourrons vous aider Ă vous faire rapidement un aperçu de leur contenu avant de les visionner.
Tout comme l’Ă©dition prĂ©cĂ©dente, je n’y aurais pas Ă©tĂ© dĂ©couvrir les dernières technos hypes de 2023. Paradoxalement, il m’a semblĂ© y avoir plus de confĂ©rences sur le SQL que le NoSQL. Kubernetes, les applications natives, le Craft et Docker auront Ă©tĂ© au rendez-vous de cette 11ième Ă©dition.

Lire la suite…
Dans une grande entreprise, le développement d’applications métiers doit respecter les règles en vigueur : normes de développement, normes de sécurité, barrière qualité, socle technique borné, intégration à l’usine de dév …
Le démarrage d’une nouvelle application Java peut être accélérée de bien des manières : usage d’outils Low Code comme Palmyra, générateur de squelettes d’application comme JHipster, utilisation d’applications blanches déclinées par catégorie d’appli (ex : batch, web), copier/coller/élagage d’une application de référence, guide de démarrage sous forme wiki … Chaque technique présente ses avantages et ses inconvénients. Mais certaines ne couvrent pas toutes les règles évoquées précédemment.
Afin d’ accĂ©lĂ©rer le dĂ©veloppement d’une nouvelle application, mon objectif Ă©tait de gĂ©nĂ©rer un squelette d’application minimaliste dont le code gĂ©nĂ©rĂ© est parfaitement maitrisĂ© et avec des dĂ©pendances choisies Ă la carte par le tech lead. Libre Ă lui ensuite de retravailler le code gĂ©nĂ©rĂ© pour mettre en place l’architecture cible de l’application, en choisissant par exemple de partir sur une architecture hexagonale.Bien connu des dĂ©veloppeurs Spring Boot, je me suis appuyĂ© sur le code backend faisant tourner le site https://start.spring.io/, Ă savoir le projet Spring Initializr conçu et maintenu majoritairement par StĂ©phane Nicoll. LĂ©ger, codĂ© en Java, reposant sur Spring Boot et documentĂ©, ce projet a Ă©tĂ© conçu pour ĂŞtre personnalisĂ© et extensible. Cela en a fait un excellent candidat.
La première mouture de ce gĂ©nĂ©rateur dĂ©veloppĂ© en quelques jours m’aura permis de gĂ©nĂ©rer :- la configuration du socle Spring Boot d’entreprise
- la configuration du logger permettant de standardiser les logs au format JSON
- la sécurisation des API REST avec Spring Security, OpenID Connect et le SSO d’entreprise
- les contrôleurs et DTO d’une API REST à partir d’une spécification OpenAPI 3
- le Dockerfile et la configuration du pipeline CI/CD
Lire la suite…Architecture Microservices avec Spring Cloud
4 October 2018 · 18 mins de lecture · eureka netflix-oss ribbon spring-boot spring-cloud zipkin ·Dans ce billet, j’aimerais vous présenter les différentes briques techniques permettant de mettre en œuvre une architecture microservices reposant sur Spring Boot, Spring Cloud, Netflix OSS et Docker. Pour m’y aider, je m’appuierai sur l’application démo Spring Petclinic Microservices que je vous avais déjà brièvement présenté en 2016 et que j’ai récemment migrée vers Spring Cloud Finchley et Spring Boot 2.
Ce fork a été construit à partir de l’application monolithique spring-petclinic-angularjs. Cette dernière a été découpée en plusieurs services, chacun responsable d’un domaine métier de la clinique vétérinaire : les animaux et leurs propriétaires, leurs visites à la clinique et les vétérinaires.
Au final, Spring Petclinic Microservices est construit autour de petits services indépendants (quelques centaines de ligne de code), s’exécutant dans leur propre JVM et communiquant sur HTTP via une API REST. Ces microservices sont tous écrits en Java. Mais on aurait pu utiliser Kotlin pour développer certains d’entre eux. Le front est quant à lui codé en JavaScript.
Architecture technique
Pour fonctionner, les différents microservices composant l’application Petclinic reposent sur différentes briques techniques matérialisées sur le diagramme d’architecture ci-dessous :
Lire la suite…15 prises de notes à Devoxx France 2018
27 April 2018 · 2 mins de lecture · ddd devoxx docker java kubernetes rxjs spring-boot spring-framework ·
L’intégralité des vidéos des conférences et universités présentées lors de Devoxx France 2018 sont disponibles sur la chaîne Devoxx FR de Youtube.
Si vous souhaitez rapidement vous faire un avis sur leur contenu avant de les visionner ou si vous souhaitez garder une trace écrite de ce que vous y avez appris, je mets librement à disposition mes notes prises au cours de ces 3 jours.
Les sujets sont variĂ©s : le langage Java bien Ă©videmment, des frameworks comme Spring et RxJS, de l’outillage pour vos test tests et vos builds, de l’infrastructure avec Docker et Kubernetes, de l’architecture avec DDD et OpenAPI, sans oublier des sujets plus connexes tels la place du dĂ©veloppeur en entreprise ou bien l’apprentissage du code aux enfants.
Lire la suite…


