Spring BootFramework Java se basant sur Spring. 3 est la dernière version majeure et stable du framework de développement Spring Boot. Attendue depuis un moment par les développeurs, cette nouvelle version embarque avec elle de nombreuses nouvelles fonctionnalités intéressantes (on vous en dit plus ci-dessous).
Afin de pouvoir bénéficier de ces nouveautés et plus globalement de s’assurer de la pérennité de vos applications, il faudra migrer de Spring Boot 2 à SpringBoot 3. Heureusement pour vous, Spring Boot évoluant lentement, vous avez un peu de temps pour faire cette mise à jour (la version 2.x sera encore maintenue jusqu’à la date du 18 février 2025).
Comme toute version majeure, la version de Spring Boot 3 apporte de nombreuses fonctionnalités au coeur du système. Voici un condensé des plus importantes :
Dans cette dernière version de Spring Boot, JavaLangage de développement très populaire ! 17 est la version minimum requise. À chaque grande montée de version, Spring boot s’adapte pour utiliser au minimum la dernière version LTS de Java.
L’utilisation de Java 17 nous permet d’utiliser les dernières grandes nouveautés comme l’ajout des record
, les blocs de texte (avec l’utilisation des triples quotes) ainsi que le Pattern Matching. Pour profiter pleinement de cette dernière version, nous vous conseillons d’utiliser les record
pour représenter vos DTO (Data Transfert Object), les blocs de texte pour l’écriture de vos requêtes SQLLangage permettant de communiquer avec une base de données./HQL. Nous conseillons également d’utiliser le Patterin Matching pour auto-assigner à une variable un object automatiquement cast après une expression instanceof
.
Cette troisième version signe la migration vers Jakarta EE. Pas le choix, vous allez devoir le faire sur votre projet aussi ! Attention tout de même, cette migration aura plusieurs impacts sur vos applications. Dans un premier temps, il faudra remplacer la grande majorité de vos packages javax.
par jakarta.
. Il faudra également vérifier que les différentes librairies que vous utilisez ont bien fait la migration vers Jakarta EE.
Une des nouveautés les plus attendues de cette version 3 était la prise en charge de la compilation native avec l’utilisation de Spring Native. Nous avons pu tester cette dernière, et honnêtement, la marche à l’entrée pour réussir à compiler votre application est assez élevée.
A notre sens, on est encore loin d’un monde dans lequel ajouter simplement la librairie Spring Native suffit pour une application Java compilée en native. Si vous souhaitez utiliser cette fonctionnalité sur votre application, nous vous conseillons d’attendre encore quelques temps pour que la technologie devienne mature.
Spring boot 3 améliore la prise en charge de Micrometer avec l’ajout de nouvelles configurations automatiques. Pour faciliter les interactions avec les différentes briques d’observabilité, Spring a créé une APIUne API est un programme permettant à deux applications distinctes de communiquer entre elles et d’échanger des données. unique. Après de nombreuses modifications durant l’année, on arrive enfin à une version plus stable de cette API.
Dans cette nouvelle version, Spring Boot 3 intègre l’implémentation d’un nouveau standard, celui du format des erreurs API (RFC 7807). Ce format passe par une classe ProblemDetail qui est maintenant utilisée par défaut lorsque l’on configure l’annotation @RestControllerAdvice.
Voici un exemple du format de l’exception :
{
"type": "about:blank",
"title": "Bad Request",
"status": 400,
"detail": "page can't be 0",
"instance": "/api/v1/users"
}
Cette dernière nouveauté va pouvoir vous faire gagner du temps lors de la configuration de clients HTTP. Spring Boot 3 intègre une nouvelle API HttpExchange qui permet de spécifier un client HTTP à travers des annotations et une interface Java. Si vous êtes familier avec la librairie Feign, c’est globalement la même chose, mais directement dans Spring Boot, donc vous n’avez plus besoin de rajouter de librairies supplémentaires dans votre projet.
Cette nouvelle version n’apporte pas de changement radical dans la manière de développer des applications sur Spring Boot. Néanmoins, cette version est la base majeure qui va servir pour toutes les nouveautés des prochaines années. Il ne faut pas rater ce créneau pour faire la mise à jour, car après le 18 février 2025, Spring Boot 2 ne sera plus maintenu et votre applicatif emportera avec lui de la dette technique et toutes les problématiques que cela comporte (difficulté à maintenir dans le temps, limites d’évolutions de l’application, etc.).
Comme toute grande montée de version, il est important de faire un état des lieux du projet, de lister tous les points dépréciés du projet et de les corriger. Dans ce cas, on pense notamment à la refonte de Spring Security qui a eu lieu avec Spring Boot 2.7.3 qui a déprécié tout l’ancien système.
\nLe deuxième point essentiel est de vérifier les différentes librairies que vous utilisez sur votre projet, et si elles sont bien compatibles. Dans le cadre de la migration vers Jakarta EE, cette étape est très importante, prenez bien le temps de faire les vérifications.
Le dernier point (qui est loin d’être le plus drôle), nous vous conseillons de bien lire les changelogs (particulièrement la section Breaking Changes) avant de faire les montées de version de vos librairies. Cela pourra vous sauver de nombreuses heures de déboggage à ne pas comprendre pourquoi votre projet ne fonctionne plus.
Petit conseil bonus : focalisez-vous bien sur une tâche à la fois, et n’essayez pas de monter toutes les versions d’un coup. Montez petit à petit, cela pourra vous permettre de comprendre au mieux les impacts de vos changements, ainsi que la provenance de vos erreurs.
Chez AXOPEN, cela fait des années que nous réalisons des projets de développement d’applications spécifiques sur Spring Boot, et plus largement dans l’univers JAVA. Particulièrement attachés à être toujours à l’état de l’art sur les technologies, notamment pour ne pas subir les problématiques liées à la dette technique, nous sommes habitués à réaliser des montées de version d’applications Spring Boot.
En fonction de votre contexte spécifique, nous pouvons imaginer plusieurs formes d’accompagnement :
Spring Security : c’est quoi et comment ça marche ? Cet article passe en revue les fondamentaux à connaître
Spring Batch, c’est quoi ? Définition, implémentation et retour d’expériences du framework JAVA !
Les Websockets, c’est quoi ? Définition et implémentation dans une application Angular et Java Springboot