Spring YAML Configuration

Spring YAML Configuration

1. Vue d'ensemble

L'une des méthodes de configuration des 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.

Lectures complémentaires:

Un guide rapide sur Spring @Value

Apprenez à utiliser l'annotation Spring @Value pour configurer des champs à partir de fichiers de propriétés, de propriétés système, etc.

Read more

Utilisation de Spring @Value avec les valeurs par défaut

Un guide rapide et pratique pour définir les valeurs par défaut lors de l'utilisation de l'annotation @Value dans Spring.

Read more

Comment injecter une valeur de propriété dans une classe non gérée par Spring?

Apprenez à initialiser les valeurs de propriétés dans les classes Java sans utiliser directement le mécanisme d’injection de Spring.

Read more

2. Fichier YAML de printemps

Les profils Spring aident les applications Spring à définir différentes propriétés pour différents environnements.

Voici un simple fichier YAML qui contient deux profils. The three dashes separating the two profiles indicate the start of a new document so all the profiles can be described in the same YAML file.

Le chemin relatif du fichierapplication.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:
    profiles: test
name: test-YAML
environment: test
servers:
    - www.abc.test.com
    - www.xyz.test.com

---
spring:
    profiles: prod
name: prod-YAML
environment: production
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 List servers = new ArrayList<>();

    // standard getters and setters

}

Les annotations utilisées ici sont:

  • @Configuration marque la classe comme 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éder aux propriétés YAML

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

Dans le fichier de propriétés, définissons la variable d'environnementspring.active.profiles surprod. Si nous ne définissons passpring.profiles.active,, la valeur par défaut sera 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 en utilisant lesCommandLineRunner.

@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("servers: " + myConfig.getServers());
    }
}

La sortie sur la ligne de commande:

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

5. Remplacement de propriété YAML

Au démarrage de printemps, les fichiers YAML peuvent être remplacés par d'autres fichiers de propriétés YAML en fonction de leur emplacement. Les propriétés YAML peuvent être remplacées par des fichiers de propriétés situés aux emplacements suivants, par ordre de priorité.

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

  • Propriétés des profils emballés dans le pot emballé

  • Propriétés d'application placées à l'extérieur du pot emballé

  • Propriétés d'application emballées à l'intérieur du pot emballé

6. Conclusion

Dans cet article rapide, nous avons vu comment configurer les propriétés des 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 disponibleover on GitHub.