Configuration Spring YAML

1. Vue d'ensemble

L'une des façons de configurer les applications Spring consiste à utiliser les fichiers de configuration YAML.

Dans cet article rapide, nous allons configurer différents profils pour une simple application Spring Boot utilisant YAML.

2. Fichier YAML de printemps

Les profils Spring permettent aux applications Spring de définir différentes propriétés pour différents environnements.

Voici un simple fichier YAML contenant deux profils. Les trois tirets séparant les deux profils indiquent le début d'un nouveau document afin que tous les profils puissent être décrits dans le même fichier YAML.

Le chemin relatif du fichier application.yml est /myApplication/src/main/resources/application.yml.

L'application Spring prend le premier profil comme profil par défaut, sauf indication contraire dans l'application Spring.

spring: config: activate: on-profile: test name: test-YAML environment: testing enabled: false servers: - www.abc.test.com - www.xyz.test.com --- spring: config: activate: on-profile: prod name: prod-YAML environment: production enabled: true servers: - www.abc.com - www.xyz.com

3. Lier YAML à une classe de configuration

Pour charger un ensemble de propriétés associées à partir d'un fichier de propriétés, nous allons créer une classe de bean:

@Configuration @EnableConfigurationProperties @ConfigurationProperties public class YAMLConfig { private String name; private String environment; private boolean enabled; private List servers = new ArrayList(); // standard getters and setters }

Les annotations utilisées ici sont:

  • @Configuration marque la classe comme une source de définitions de bean
  • @ConfigurationProperties lie et valide les configurations externes à une classe de configuration
  • @EnableConfigurationProperties cette annotation est utilisée pour activer les beans annotés @ConfigurationProperties dans l'application Spring

4. Accès aux propriétés YAML

Pour accéder aux propriétés YAML, nous créons un objet de la classe YAMLConfig et accédons aux propriétés à l'aide de cet objet.

Dans le fichier de propriétés, définissons la variable d'environnement spring.active.profiles sur prod . Si nous ne définissons pas spring.profiles.active, il utilisera par défaut la première propriété de profils définie dans le fichier YAML.

Le chemin relatif du fichier de propriétés est /myApplication/src/main/resources/application.properties.

spring.profiles.active=prod

Dans cet exemple, nous affichons les propriétés à l'aide de CommandLineRunner.

@SpringBootApplication public class MyApplication implements CommandLineRunner { @Autowired private YAMLConfig myConfig; public static void main(String[] args) { SpringApplication app = new SpringApplication(MyApplication.class); app.run(); } public void run(String... args) throws Exception { System.out.println("using environment: " + myConfig.getEnvironment()); System.out.println("name: " + myConfig.getName()); System.out.println("enabled:" + myConfig.isEnabled()); System.out.println("servers: " + myConfig.getServers()); } }

La sortie sur la ligne de commande:

using environment: production name: prod-YAML enabled: true servers: [www.abc.com, www.xyz.com]

5. Remplacement de propriété YAML

Dans Spring Boot, les fichiers YAML peuvent être remplacés par d'autres fichiers de propriétés YAML.

Avant la version 2.4.0, les propriétés YAML étaient remplacées par les fichiers de propriétés aux emplacements suivants, dans l'ordre de priorité la plus élevée en premier:

  • Propriétés des profils placés à l'extérieur du pot emballé
  • Propriétés des profils emballées dans le pot emballé
  • Propriétés de l'application placées à l'extérieur du pot emballé
  • Propriétés de l'application emballées dans le pot emballé

À partir de Spring Boot 2.4, les fichiers externes remplacent toujours les fichiers empaquetés, que leur profil soit spécifique ou non.

6. Conclusion

Dans cet article rapide, nous avons vu comment configurer les propriétés dans les applications Spring Boot à l'aide de YAML. Nous avons également vu les règles de remplacement de propriété suivies par Spring Boot pour les fichiers YAML.

Le code de cet article est disponible à l'adresse over sur GitHub.