• 8 hours
  • Medium

Free online content available in this course.

course.header.alt.is_video

course.header.alt.is_certifying

Got it!

Last updated on 11/8/22

Identifiez les avantages de Spring Boot

Simplifiez votre projet avec Spring Boot

Vous l’avez noté, Spring est un écosystème avec un grand E ! À tel point que parfois ce framework peut même sembler trop rigide, trop encombrant ou trop complexe, il faut le reconnaître. De plus, il contient de nombreux composants, et ces derniers ne s’utilisent pas de façon exclusive : dans la très grande majorité des projets, vous devrez utiliser plusieurs composants de Spring simultanément. Par voie de conséquence, l’intégration de plusieurs composants Spring pour un même projet ajoute de la complexité. Complexité qui sera croissante plus le projet prendra de l’importance !

Non non, ne fuyez pas ! Rassurez-vous, une solution existe ! Nous pouvons tirer profit de tous les avantages de Spring sans y perdre notre latin !

Comment faire ? 😱

Je vous en ai déjà brièvement parlé au chapitre précédent, il s’agit d’utiliser Spring Boot ! Ce composant de Spring a été créé pour nous aider à utiliser Spring Framework. C’est un composant au service des autres composants.

Illustrons l’idée. Vous vous souvenez peut-être de la comparaison que j’ai déjà utilisée : Spring Framework est comme un grand magasin spécialisé de meubles, où un composant est tel un meuble que l’on peut acheter.

Eh bien Spring Boot, c’est comme des gammes de meubles qui nous sont proposées. Lorsqu’on achète un meuble, il est certain que les autres meubles de la même gamme iront ensemble (c’est pour ça que c’est une gamme !), et cela évite les surprises lors de l’association des meubles.

Là, c’est pareil : Spring Boot nous met à disposition les bons composants, nous permettant ainsi de les faire fonctionner ensemble.

Et cela contribuera à la simplification de notre projet !

À vous de jouer !

Jouons au jeu des 7 différences ! Je vous propose de comparer deux projets Java qui utilisent Spring Framework. L’un utilise le composant Spring Boot, l’autre non.

La consigne est simple : Quelles différences pouvez-vous observer ?

Projet sans Spring Boot : https://github.com/OpenClassrooms-Student-Center/creez-une-application-spring-boot/tree/master/webwithoutsb

Projet avec Spring Boot : https://github.com/OpenClassrooms-Student-Center/creez-une-application-spring-boot/tree/master/webwithsb

Correction

Alors, qu’avez-vous noté ?

Je vous décris les différences entre ces deux projets, en mettant en avant les avantages de Spring Boot ✅.

Répertoires

Sans Spring Boot

Avec Spring Boot

src/main/java

4 classes Java : 

  1. HomeController.java

  2. User.java

  3. UserRepository.java

  4. JpaConfig.java : c’est moi qui ai créé cette classe… 😅

4 classes Java :

  1. HomeController.java

  2. User.java

  3. UserRepository.java

  4. WebwithsbApplication.java : c’est une classe créée automatiquement par Spring Boot, plus de perte de temps ! ✅

src/main/resources

  • contextFront.xml : configuration manuelle du scanning et du viewresolver

  • META-INFO/persistence.xml : contient la configuration de la BDD

  • Pas besoin de contextFront : Spring Boot s’en occupe ! ✅

  • application.properties : contient la configuration de la BDD. Est plus simple à aborder que XML. ✅

  • template/home.html : rendu HTML à fournir.

src/main/webapp

2 fichiers :

  • template/home.jsp : rendu HTML à fournir

  • web.xml : fournit de la configuration pour la gestion des servlets

Ce dossier n’existe pas ! Spring Boot n’a pas besoin de tout ça ! ✅

fichiers pom.xml

8 dépendances

+ 2 dépendances dans le dependencyManagement pour les versions

5 dépendances sans avoir défini les versions

👉 Moins de fichiers, plus d’automatisation… Bref, c’est une victoire très nette de Spring Boot, qui nous simplifie la vie !

Et cerise sur le gâteau : pour le déploiement, le projet avec Spring Boot se lance avec une simple commande, alors que le projet sans Spring Boot me demande d’installer un serveur web (comme Tomcat) pour le déployer et le démarrer.

Vraiment, jusqu’au bout, Spring Boot nous simplifie les choses ! 🤩

Les avantages de Spring Boot

Reprenons notre souffle après cet exercice, et analysons les avantages de Spring Boot.

Avantage n° 1 : optimisation de la gestion des dépendances

Spring Boot nous fournit des starters, qui correspondent à un ensemble de dépendances homogénéisées (associations, versions). On peut les comparer à des kits de dépendances

Une boîte dans laquelle on trouve Spring Web, Spring Data JPA, {Spring Security}.
Les starters

Nul besoin de définir les versions des dépendances explicitement dans le pom.xml : Maven les déduit grâce à la version de Spring Boot utilisée.

Dans ce cours, nous allons apprendre à choisir les bons starters en fonction du besoin.

Avantage n° 2 : l’autoconfiguration

C’est peut-être l’avantage le plus important de Spring Boot ! L’exercice précédent l’a révélé : avec Spring Boot, il y a beaucoup moins de configuration (concernant la gestion des servlets, le chargement du contexte Spring, la connexion à la base de données). Ce n’est pas un hasard. L’utilisation de Spring Boot, et l’annotation @SpringBootApplication placée au niveau de la classe principale de notre projet (celle générée automatiquement), déclenchent automatiquement de nombreuses opérations en background qui nous sont nécessaires.

Le développeur peut alors se concentrer sur le code métier au lieu de passer un temps fou à configurer le framework qu’il utilise.

Au fur et à mesure du cours, je vous en dirai plus sur les opérations que Spring Boot réalise en background.

Avantage n° 3 : la gestion des propriétés

Spring Boot permet de gérer les propriétés au sein d’un programme en toute simplicité.

Dans l’exercice, vous avez pu voir le fichier applications.properties. Les informations qui étaient saisies ont été prises en compte par certaines classes, sans que nous ayons besoin d’agir. Ce fichier est l’un des éléments clés pour la gestion des propriétés de notre programme.

Mais cela ne se limite pas à ce simple fichier ; par exemple, il est facilement possible de récupérer même des variables d’environnement système, et de les fournir à nos classes.

Dans ce cours, nous découvrirons comment tirer profit de la capacité de Spring Boot à gérer les propriétés.

Avantage n° 4 : le monitoring et la gestion du programme

Je ne souhaite pas rentrer dans le détail ici, mais sachez que Spring Boot Actuator correspond à une fonctionnalité de Spring Boot qui permet de monitorer et de manager notre programme pendant qu’il est en cours d’exécution.

Par exemple, grâce aux endpoints Actuator, on peut modifier une propriété en live, et le programme en tiendra compte sans qu’on ait besoin de le redémarrer. Très utile !

Avantage n° 5 : le déploiement

Quel est l’artefact produit par un projet Spring Boot ? Un simple fichier JAR

Que faut-il pour exécuter un JAR ? Vous le savez, une JRE, et c’est tout !

Mais comment est-ce possible pour une application web qui a forcément besoin d’un serveur de conteneur web ?

Un projet Spring Boot contient un tomcat embarqué au sein même du JAR généré. Le projet web peut donc être déployé au sein de ce tomcat embarqué.

Conclusion, exécuter notre projet Spring Boot, quelles que soient ses fonctionnalités, est très simple ! Et cela permet de coupler facilement nos projets Spring Boot avec d’autres outils comme Docker.

En résumé

  • Spring Boot œuvre pour la simplification du développement de nos projets avec Spring Framework.

  • La gestion des dépendances est simplifiée grâce aux starters qui regroupent plusieurs dépendances et homogénéisent les versions.

  • L’autoconfiguration permet de se concentrer sur le code métier, et simplifie énormément la mise en œuvre des composants Spring qui sont utilisés.

  • La gestion efficace des propriétés rend notre application configurable.

  • Spring Boot Actuator permet de monitorer et gérer une application pendant son exécution.

  • Le déploiement de l’application est facilité par la génération d’un JAR, et pour les projets web, un tomcat est embarqué.

La première partie touche déjà à sa fin ! Alors, qu'avez-vous retenu ? Découvrez-le en réalisant le quiz !

Example of certificate of achievement
Example of certificate of achievement