Comment définir une carte en YAML pour un POJO?

Haut Java

Je viens d'annoncer le nouveau cours Learn Spring , axé sur les principes de base de Spring 5 et Spring Boot 2:

>> VOIR LE COURS

1. Vue d'ensemble

Dans ce didacticiel, nous expliquerons comment utiliser les propriétés définies dans un fichier YAML pour configurer les valeurs d'une carte dans nos classes POJO.

2. POJO et YAML

Les classes POJO sont des objets Java simples. YAML est un format de données structurées lisible par l'homme qui utilise l'indentation pour indiquer l'imbrication.

2.1. Exemple de carte simple

Imaginons que nous gérons une boutique en ligne et que nous créons un service qui traduit les tailles de vêtements. Au début, nous ne vendons des vêtements qu'au Royaume-Uni. Nous voulons savoir à quelle taille britannique les étiquettes «S», «M», «L», etc. Nous créons notre classe de configuration POJO:

@ConfigurationProperties(prefix = "t-shirt-size") public class TshirtSizeConfig { private Map simpleMapping; public TshirtSizeConfig(Map simpleMapping) { this.simpleMapping = simpleMapping; } //getters and setters.. } 

Notez les @ConfigurationProperties avec la valeur de préfixe . Nous définirons notre mappage sous cette même valeur racine dans notre fichier YAML, comme nous pouvons le voir dans la section suivante.

Nous devons également nous rappeler d'activer les propriétés de configuration avec l'annotation suivante sur notre Application.class :

@EnableConfigurationProperties(TshirtSizeConfig.class) public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }

2.2. Configuration YAML

Maintenant, nous ajoutons t-shirt-sizeà notre configuration YAML.

Nous pouvons utiliser la structure suivante dans notre fichier application.yml :

t-shirt-size: simple-mapping: XS: 6 S: 8 M: 10 L: 12 XL: 14

Notez l'indentation et les espaces. YAML utilise l'indentation pour indiquer l'imbrication. La syntaxe recommandée est de deux espaces pour chaque niveau imbriqué.

Remarquez comment nous utilisons simple-mappingavec le tiret, mais le nom de notre propriété dans notre classe est appelé simpleMapping. Les propriétés YAML avec des tirets seront automatiquement traduites en l'équivalent camel-case dans le code.

2.3. Exemple de carte plus complexe

Après le succès de nos boutiques britanniques, nous devons maintenant envisager de convertir les tailles en mesures d'autres pays. Par exemple, nous voulons maintenant savoir quelle est la taille du label «S» en France et aux États-Unis. Nous devons ajouter une autre couche de données à notre configuration.

Nous pouvons modifier notre application.yml avec un mappage plus complexe:

t-shirt-size: complex-mapping: XS: uk: 6 fr: 34 us: 2 S: uk: 8 fr: 36 us: 4 M: uk: 10 fr: 38 us: 6 L: uk: 12 fr: 40 us: 8 XL: uk: 14 fr: 42 us: 10 

Le champ correspondant dans notre POJO sera une carte de cartes:

private Map
    
      complexMapping;
    

3. Conclusion

Dans cet article, nous avons vu comment nous pourrions définir des cartes imbriquées simples et plus complexes dans un fichier de configuration YAML pour un simple POJO.

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

Fond Java

Je viens d'annoncer le nouveau cours Learn Spring , axé sur les principes de base de Spring 5 et Spring Boot 2:

>> VOIR LE COURS