Nous arrivons à l’étape 2 ! Dans ce chapitre, nous allons voir comment structurer et configurer notre projet.
Êtes-vous prêt ? C’est parti !
Structurez vos packages
Comment structurer notre package si on ne connaît pas encore les classes qui seront produites ?
Bonne question, je vois que vous êtes réfléchi et que vous avez appris à ne pas foncer tête baissée ! Bravo !
La réponse se veut très simple : les bonnes pratiques !
Premièrement, gardons à l’esprit que Spring Boot est particulièrement utilisé dans le contexte d’application web (même si ça ne se limite pas à cela).
Deuxièmement, la majorité des applications ont la nécessité d'interagir avec des données externes (par exemple une base de données, un autre programme, ou même le système de fichiers).
De ces différents besoins, une architecture en couches a émergé, avec un rôle pour chaque couche :
couche Controller : gestion des interactions entre l’utilisateur de l’application et l’application ;
couche Service : implémentation des traitements métiers spécifiques à l’application ;
couche Repository : interaction avec les sources de données externes ;
couche Model : implémentation des objets métiers qui seront manipulés par les autres couches.
Cette architecture standard correspondra à la majorité de vos projets, et vous la retrouvez très fréquemment.
Pour être franc, on n'a pas besoin de tous ces packages pour un simple Hello World. Mais dans les parties du cours suivantes, vous les verrez en action.
Dans notre cas, contentons-nous de créer les packages service et model. Voici le résultat :
Parfait ! Passons à la suite.
Complétez le fichier applications.properties
L’étape suivante consiste à définir quelques informations de base pour notre application, à travers les propriétés.
Mais avant, laissez-moi vous en apprendre un peu plus sur Spring et la gestion des propriétés. Je ne vous apprends rien en vous disant qu’une application doit être paramétrable, c’est-à-dire que son comportement peut changer en fonction des paramètres fournis.
Pour rendre paramétrable une application, elle doit donc être capable de lire ces paramètres. Mais où sont-ils ? Qui les définit ? Comment les lire ?
Ils sont dans des “sources de propriétés” (property sources), et sont définis par les gestionnaires de ces sources.
Là où Spring Boot nous intéresse, c’est qu’il est capable de lire ces sources de propriétés (sans interaction de notre part), et de rendre les propriétés disponibles sous forme de beans au sein du contexte Spring.
Parmi les sources de propriétés, il y a :
les propriétés de la JVM ;
les variables d’environnements du système d’exploitation ;
les arguments passés par la ligne de commande ;
les fichiers .properties ou .yml (comme application.properties).
Vous aurez l’occasion de manipuler ces différentes sources de propriétés, mais pour le Hello World, on va se contenter de rajouter quelques informations au fichier applications.properties.
Comment fait-on pour connaître les propriétés existantes, vu que application.properties est vide ?
Pour en savoir plus sur les propriétés de Spring, vous pouvez lire la documentation de Spring.
Youhou, de la documentation ! Vous avez 2 heures...
D’accord, je vous aide, mettons en place 2 propriétés :
spring.application.name : permet de donner un nom à notre application Spring Boot.
logging.level.[package] : permet d’indiquer le log level pour un package donné.
Voilà le résultat de mon fichier applications.properties :
spring.application.name=HelloWorld
logging.level.org.springframework=error
Quelques explications :
Ici, le nom est arbitraire ; à vrai dire, cela n’aura pas d’impact sur le déroulement de l’application pour notre Hello World, c’est surtout informatif.
logging.level.org.springframework=ERROR : les classes du package org.springframework affichent uniquement les logs de niveau ERROR dans la console (autrement dit, on n’est pas pollué par plein d’informations).
C’est tout ! Nous n’avons rien à faire d’autre, car dans le monde magique de Spring Boot, les propriétés sont prises en compte automatiquement sans que le développeur ait d’autres actions à réaliser !
En résumé
Je vous conseille de suivre les bonnes pratiques pour structurer vos packages, et de suivre un modèle en couches.
En l’occurrence, nous avons opté pour 4 couches : Controller, Service, Repository et Model.
L’approche en couches permet une meilleure évolution et une meilleure maintenabilité du code.
Spring Boot a la très grande capacité de savoir lire des sources de propriétés, et le fichier applications.properties en est la démonstration. Pour configurer rapidement et efficacement votre application, ajoutez vos propriétés au fichier applications.properties.
Enfin, nous sommes prêts pour écrire du code !