Hoe definieer je een kaart in YAML voor een POJO?

Java Top

Ik heb zojuist het nieuwe aangekondigd Leer de lente natuurlijk, gericht op de basisprincipes van Spring 5 en Spring Boot 2:

>> BEKIJK DE CURSUS

1. Overzicht

In deze zelfstudie laten we zien hoe we eigenschappen kunnen gebruiken die zijn gedefinieerd in een YAML-bestand om waarden voor een Kaart in onze POJO-lessen.

2. POJO en YAML

POJO-klassen zijn gewone oude Java-objecten. YAML is een door mensen leesbaar gestructureerd gegevensformaat dat inspringing gebruikt om nesten aan te geven.

2.1. Gemakkelijk Kaart Voorbeeld

Laten we ons voorstellen dat we een online winkel runnen, en we creëren een dienst die kledingmaten vertaalt. In eerste instantie verkopen we alleen kleding in het VK. We willen weten naar welke UK-maat het label "S", "M", "L" enzovoort verwijst. We maken onze POJO-configuratieklasse:

@ConfigurationProperties (prefix = "t-shirt-size") openbare klasse TshirtSizeConfig {privékaart simpleMapping; openbare TshirtSizeConfig (Map simpleMapping) {this.simpleMapping = simpleMapping; } // getters en setters ..} 

Let op de @ConfigurationProperties met de voorvoegsel waarde. We zullen onze mapping definiëren onder dezelfde root-waarde in ons YAML-bestand, zoals we kunnen zien in de volgende sectie.

We moeten ook onthouden om configuratie-eigenschappen in te schakelen met de volgende annotatie op onze Application.class:

@EnableConfigurationProperties (TshirtSizeConfig.class) openbare klasse DemoApplication {openbare statische leegte hoofd (String [] args) {SpringApplication.run (DemoApplication.class, args); }}

2.2. YAML-configuratie

Nu voegen we toe T-shirt maat naar onze YAML-configuratie.

We kunnen de volgende structuur gebruiken in onze application.yml het dossier:

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

Let op de inspringing en de spaties. YAML gebruikt inspringing om nesten aan te geven. De aanbevolen syntaxis is twee spaties voor elk genest niveau.

Merk op hoe we het gebruiken simple-mapping met het streepje, maar onze eigenschapsnaam in onze klas wordt genoemd simpleMapping. YAML-eigenschappen met streepjes worden automatisch vertaald naar het camel-case-equivalent in code.

2.3. Complexer Kaart Voorbeeld

Na onze succesvolle winkels in het VK, moeten we nu overwegen om maten te vertalen naar de maten van andere landen. We willen nu bijvoorbeeld weten welke maat het label "S" heeft in Frankrijk en de VS. We moeten nog een gegevenslaag toevoegen aan onze configuratie.

We kunnen onze application.yml met een meer complexe mapping:

t-shirt-maat: 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 

Het overeenkomstige veld in onze POJO is een kaart met kaarten:

privékaart complexMapping;

3. Conclusie

In dit artikel hebben we gezien hoe we eenvoudige en complexere geneste kaarten konden definiëren in een YAML-configuratiebestand voor een eenvoudige POJO.

De code voor dit artikel is beschikbaar op GitHub

Java onderkant

Ik heb zojuist het nieuwe aangekondigd Leer de lente natuurlijk, gericht op de basisprincipes van Spring 5 en Spring Boot 2:

>> BEKIJK DE CURSUS