
Spring Boot
Spring est un framework proposant de trĂšs nombreuses fonctionnalitĂ©s (Web, SĂ©curitĂ©, batch, accĂšs aux donnĂ©esâŠ) mais sa configuration peut sâavĂ©rer complexe et fastidieuse.
Sur le principe de âconvention over configurationâ, Spring Boot a Ă©tĂ© dĂ©veloppĂ© pour faciliter la configuration Spring grĂące Ă :
- lâauto-configuration
- les starters
- lâapproche client lourd
On utilise des gestionnaires de dépendances (Gradle ou Maven).
On sĂ©lectionne des starters ou ensembles de dĂ©pendances regroupĂ©es par catĂ©gorie avec tout ce dont on a besoin : les dĂ©pendances (et leurs dĂ©pendances), la configuration par dĂ©faut, etc. Par exemple : Spring Web, Spring Boot Dev Tools, Jersey, Spring Data JPAâŠ
Les librairies nĂ©cessaires sont tĂ©lĂ©chargĂ©es et ajoutĂ©es au classpath. Selon ce quâil y a dans le classpath, lâauto-configuration lance de maniĂšre automatisĂ©e les librairies prĂ©sentes (Tomcat embarquĂ©, bases de donnĂ©esâŠ).
Hello World
Projet GitHub : https://github.com/LSarribouette/springboot-basics/
Spring initializr = point dâentrĂ©e dans le projet, oĂč on choisit ce dont on a besoin.
- Depuis le site internet :
> Gestionnaire de dépendances ? ici, Gradle Groovy
(+) Pour lâinstant, peu importe Gradle ou Maven ; peu importe Groovy ou Kotlin.
> Langage ? ici, Java
> Spring Boot ? ici, 2.7.9
(+) La problématique des versions de dépendances est maintenant gérée par Spring Boot. On choisit une version de Spring Boot et il gÚre les versions des dépendances et leur migration potentielle.
> Métadonnées ?
- group (propriétaire du projet et nom de domaine inversé) = fr.lsarribouette
- artifact (nom du projet) = springbootbasics
- package name (un par dĂ©faut, que lâon peut changer) = fr.lsarribouette
- packaging = jar
(+) On nâutilise plus que le Tomcat intĂ©grĂ© pour rĂ©aliser des applications web, donc on nâa plus besoin du war.
- java version = ici, 11
> Dépendances ? ici, Spring Web, Thymeleaf, Spring Boot Dev Tools
(+) Câest ici que lâon choisit ses starters. On peut ajouter le starter Spring Data JPA et une base de donnĂ©es comme H2 database.
> Generate
On obtient un zip, que lâon importe dans notre IDE.
- Dans IntelliJ,
> New project > Spring initializr : mĂȘme dĂ©marche quâen 1.
Pour ajouter une dĂ©pendance : mvnrepository (site central pour maven, gradle, IvyâŠ)
> on cherche celle quâon veut
> on choisit sa version
> on choisit lâonglet de notre gestionnaire de dĂ©pendances
> on ajoute le code proposé dans le fichier de configuration approprié
> on clique sur le bouton pour recharger le projet
> la dépendance est téléchargée, ainsi que toutes ses dépendances à elle (et les leurs également)
Architecture du projet
On a maintenant un projet configuré selon les starters sélectionnés avec :
- un dossier src qui contient
- un dossier main pour les fichiers de production
- un dossier test pour ⊠les tests
- les fichiers de configuration âčïžGradle : le fichier build.gradle contient la configuration du projet Gradle (avec les dĂ©pendances, leurs versions, etc). Maven : lâĂ©quivalent est le fichier pom.xml.
Le dossier main contient :
- un dossier java avec
- la classe dâexĂ©cution (avec le main)
- un dossier resources avec
- un dossier static pour les fichiers CSS, JavaScript, les mediasâŠ
- un dossier templates pour les templates de page (Thymeleaf)
- le fichier application.properties pour configurer Spring (port, profilâŠ)
La classe dâexĂ©cution porte par dĂ©faut lâannotation @SpringBootApplication et la mĂ©thode run() qui permet de faire lâauto-configuration : tout ce quâil nous fait est lancĂ© (comme le serveur Tomcat et une Ă©ventuelle base de donnĂ©es).
Lâannotation @SpringBootApplication correspond en fait aux annotations :
@SpringBootConfiguration â> il indique que câest une classe de configuration
@EnableAutoConfiguration â> il dĂ©marre ce quâil faut en fonction de ce qui est fourni dans lâapplication
@ComponentScan â> (avec des paramĂštres) il indique Ă Spring quâil faut aller voir dans ce package et tous les sous-packages sâil y a des annotations (et les prendre en compte)
Lancement dâune application web
On lance lâapplication.
Sur un navigateur, on va sur http://localhost:8080/.
Ca fonctionne : on a une erreur 404 puisquâon a pas de page, mais on se connecte bien Ă notre application.
Dans resources/static, on crĂ©e un fichier index.html statique que lâon complĂšte.
Ca fonctionne : on voit maintenant le index.html.