
Le fichier `application.properties` ou `application.yml`
Découvrez le rôle essentiel des fichiers application.properties et application.yml pour centraliser la configuration de vos applications Spring Boot. Apprenez leur emplacement et leur utilisation.
Le coeur de la configuration : rôle et emplacement
Au centre du système de configuration externalisée de Spring Boot se trouvent deux fichiers conventionnels : application.properties et application.yml. Leur rôle principal est de servir de point centralisé pour définir les propriétés de configuration de votre application. Plutôt que d'éparpiller les paramètres dans diverses parties du code ou dans des fichiers de configuration disparates, Spring Boot encourage à les regrouper dans l'un de ces fichiers.
Par convention, Spring Boot recherche automatiquement ces fichiers à des emplacements spécifiques au démarrage de l'application. L'emplacement le plus courant et recommandé pendant le développement est la racine du répertoire src/main/resources dans votre projet Maven ou Gradle. Lorsque vous créez un projet via Spring Initializr, ce répertoire est généralement créé pour vous, et vous pouvez y placer votre fichier application.properties ou application.yml.
Lorsque l'application est packagée (par exemple, en JAR exécutable), ce fichier est inclus à la racine du classpath. Spring Boot le détectera et chargera les propriétés qu'il contient dans son environnement de configuration. Il est important de noter que vous n'avez besoin que d'un seul de ces fichiers par défaut (soit .properties, soit .yml), bien qu'il soit techniquement possible d'avoir les deux (avec des règles de priorité spécifiques, mais c'est généralement déconseillé pour éviter la confusion).
Choisir son format : .properties ou .yml
Spring Boot vous laisse le choix entre deux formats principaux pour votre fichier de configuration central :
application.properties: C'est le format historique et standard de Java pour les fichiers de propriétés. Il utilise une syntaxe simple clé-valeur, où chaque propriété est définie sur une ligne séparée par un signe égal (=) ou deux-points (:). Les clés sont généralement en notation "dotted" (par exemple,spring.datasource.url). Ce format est simple et largement compris.application.yml(ouapplication.yaml) : YAML (YAML Ain't Markup Language) est un format de sérialisation de données conçu pour être très lisible par les humains. Il utilise l'indentation (espaces, pas de tabulations !) pour représenter la structure hiérarchique des données. Cela le rend souvent plus agréable à lire et à écrire pour les configurations complexes avec des listes ou des objets imbriqués, comparé à la répétition des préfixes dans les fichiers.properties.
Le choix entre les deux formats est principalement une question de préférence personnelle et d'équipe. YAML est souvent privilégié pour sa lisibilité et sa capacité à représenter des structures complexes plus naturellement, tandis que .properties reste une option simple et efficace, surtout pour des configurations moins élaborées. Spring Boot traite les deux formats de manière équivalente en termes de fonctionnalités.
Il est crucial de respecter la syntaxe du format choisi. Une erreur d'indentation dans un fichier YAML, par exemple, peut empêcher l'application de démarrer ou entraîner un chargement incorrect des propriétés.
Exemples de configuration courants
Ces fichiers sont utilisés pour configurer une multitude d'aspects de votre application Spring Boot. Voici quelques exemples typiques :
- Configuration du serveur web embarqué : Changer le port d'écoute, le contexte path, activer SSL.
- Configuration de la source de données (DataSource) : URL de la base de données, nom d'utilisateur, mot de passe, driver JDBC.
- Configuration de la journalisation (Logging) : Définir les niveaux de log pour différents packages (par exemple, mettre le niveau DEBUG pour un package spécifique).
- Configuration des modules Spring : Activer/désactiver des fonctionnalités de Spring Security, configurer Spring Data, etc.
- Propriétés spécifiques à l'application : Définir vos propres clés de configuration pour votre logique métier (clés d'API externes, seuils, messages personnalisés...).
Par exemple, pour changer le port du serveur en 8090 :
Dans application.properties:
server.port=8090Dans application.yml:
server:
port: 8090Pour configurer une source de données simple :
Dans application.properties:
spring.datasource.url=jdbc:mysql://localhost:3306/mabdd
spring.datasource.username=root
spring.datasource.password=secret
spring.datasource.driver-class-name=com.mysql.cj.jdbc.DriverDans application.yml:
spring:
datasource:
url: jdbc:mysql://localhost:3306/mabdd
username: root
password: secret
driver-class-name: com.mysql.cj.jdbc.DriverChargement et priorité
Comme mentionné, Spring Boot charge automatiquement le fichier application.properties ou application.yml trouvé dans src/main/resources (ou à la racine du classpath une fois packagé). Les propriétés définies dans ce fichier sont ajoutées à l'environnement de configuration de Spring.
Il est important de comprendre que ce fichier n'est qu'une des nombreuses sources de configuration que Spring Boot prend en compte. D'autres sources, comme les variables d'environnement, les propriétés système Java, ou les arguments de ligne de commande, ont une priorité plus élevée. Cela signifie que vous pouvez définir une valeur par défaut dans votre application.properties et la surcharger facilement dans un environnement de production en définissant une variable d'environnement correspondante, sans avoir à modifier le fichier lui-même. Nous explorerons cette hiérarchie plus en détail ultérieurement.
De plus, ce fichier de base peut être complété ou surchargé par des fichiers spécifiques aux profils (par exemple, application-dev.properties, application-prod.yml), permettant d'adapter finement la configuration à chaque environnement de déploiement. Le fichier application.properties / .yml constitue ainsi le socle de votre configuration, offrant un point de départ clair et centralisé pour paramétrer votre application Spring Boot.