On me demande souvent quelle est
la différence entre Spring et Spring Boot. Avec cet article, je souhaite
apporter un peu de lumière sur ce sujet. Le fait que les termes
"Spring", "Spring Framework" et "Spring Boot"
soient volontiers utilisés comme synonymes ne facilite pas la distinction.
C'est pourquoi je souhaite faire
une distinction entre le "Spring Framework" et le "Spring
Boot". Le terme "Spring", quant à lui, englobe les deux et
comprend tout ce que le monde de Spring a à offrir dans son ensemble.
Le Spring Framework
Spring FrameworkSelon la
documentation officielle, le Spring Framework est "un modèle de
programmation et de configuration complet pour les applications d'entreprise
modernes basées sur Java - sur toutes les plates-formes de déploiement
possibles. [...] Spring se concentre sur le 'câblage' des applications
d'entreprise, sans liens inutiles avec des environnements de déploiement
spécifiques".
Le Spring Framework est donc un ensemble d'outils pour le développement d'applications d'entreprise. Ses principales fonctionnalités sont l'injection de dépendances, les événements, les ressources, l'internationalisation, l'accès aux données avec des transactions, l'intégration et bien d'autres.
BELZ DEV (entreprise / société / agence) de développement
d'applications web et mobiles, et de progiciel de gestion intégré en Afrique
(Sénégal-Dakar)
Spring Boot
Spring Boot s'appuie sur le Spring Framework et doit permettre de développer très facilement des applications Spring exécutables et prêtes pour la production. Cela est possible grâce à un mécanisme d'autoconfiguration qui préconfigure les outils du Spring Framework, ainsi qu'une série d'autres outils, de manière judicieuse. Par "configuration", on entend ici la configuration des beans Spring qui détermine quels beans sont disponibles pour l'injection de dépendances et comment ils sont "câblés" entre eux - et non les propriétés de configuration que l'on gère par exemple dans le fichier application.properties.
Par exemple, Spring Boot Web
inclut par défaut un conteneur Tomcat intégré qui fonctionne sur le port 8080 -
et ce sans que l'on ait à configurer quoi que ce soit. Il est possible de
modifier le port en saisissant simplement une autre valeur dans le champ
server.port de l'application.properties. Il est également possible d'utiliser
un autre conteneur de servlet à la place de Tomcat. Pour cela, il suffit
d'exclure Tomcat dans la configuration Maven ou Gradle et d'ajouter la dépendance
pour un autre conteneur, comme Jetty par exemple.
D'autres aspects, tels que Spring
Data, Spring Security et autres, peuvent également être ajoutés à une
application en incluant simplement des dépendances dans la configuration du
build. Spring Boot reconnaît alors, par la seule présence de certaines classes
ou propriétés de configuration, qu'une fonctionnalité doit être activée et crée
automatiquement les Spring Beans nécessaires à cet effet. Par exemple, si
HikariCP est présent dans le chemin des classes, un bean HikariDataSource est
automatiquement créé. Si, à la place, DBCP2 est dans le classpath (et Hikari
exclu), le pool de connexion DBCP2 est utilisé pour la source de données au
lieu de Hikari. Pour Spring Data JPA, Hibernate et les transactions sont
automatiquement activées.
En outre, Spring Boot enregistre
toute une série de @PropertySources, de sorte que les propriétés d'application
sont automatiquement lues à partir de pas moins de 17 sources différentes -
entre autres application.properties, application.yaml, paramètres de ligne de
commande, variables système OS, Java System Properties, etc.
Le plugin spring-boot-maven-plugin place l'application et toutes les bibliothèques nécessaires dans un "fat jar", qui peut être lancé avec java -jar my-app.jar.
Enfin, Spring Boot apporte une gestion des dépendances très complète, dans laquelle les versions des bibliothèques Spring, mais aussi de nombreuses librairies tierces (par ex. Apache Commons, Hibernate, JUnit, Mockito et bien d'autres) sont harmonisées et gérées. Il est ainsi possible d'intégrer ces bibliothèques dans le projet sans devoir gérer soi-même leurs versions.
Avec Spring Initializr, il est d'ailleurs possible de créer en un clin d'œil un nouveau projet Spring-Boot, avec lequel on peut démarrer directement le développement, sans effort initial. L'Initializr est disponible sous forme d'interface utilisateur web, d'outil en ligne de commande, pour des clients HTTP comme cURL, ou même directement à partir d'IDE (p. ex. IntelliJ IDEA).
Conclusion
Le Spring Framework est un
ensemble d'outils permettant de développer des applications d'entreprise pour
toutes les plates-formes de déploiement possibles. Spring Boot repose sur cette
base et offre de nombreuses fonctions de confort qui permettent un démarrage
rapide du projet et sont raisonnablement préconfigurées, tout en pouvant être
adaptées de manière très flexible par configuration aux besoins respectifs.

Enregistrer un commentaire