• 8 heures
  • Moyenne

Ce cours est visible gratuitement en ligne.

course.header.alt.is_video

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 27/09/2021

Structurez et configurez votre projet

Connectez-vous ou inscrivez-vous gratuitement pour bénéficier de toutes les fonctionnalités de ce cours !

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.

Architecture en couches Contrôleur > Service > Repository. La couche Modèle est exploitée par les 3 précédentes.
Représentation visuelle de l’architecture en 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 :

L’arborescence des packages contient le package racine com.openclassrooms.helloworld, auquel 2 sous-packages sont rattachés : com.openclassrooms.helloworld.model et com.openclassrooms.helloworld.service.
Arborescence des packages du projet Hello World

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 :

  1. spring.application.name : permet de donner un nom à notre application Spring Boot.

  2. 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 ! 

Exemple de certificat de réussite
Exemple de certificat de réussite