YAML na popis objekata u Spring Boot-u

1. Pregled

U ovom ćemo kratkom vodiču pobliže pogledati kako mapirati popis YAML u Popis u Spring Boot.

Prvo ćemo započeti s nekim pozadinama kako definirati popise u YAML-u. Zatim ćemo dublje istražiti kako bismo povezali YAML popise Popiss predmeta.

2. Brzi pregled popisa u YAML-u

Ukratko, YAML je razumljiv standard serializacije podataka koji pruža sažet i jasan način pisanja konfiguracijskih datoteka. Dobra stvar kod YAML-a je činjenica da podržava više vrsta podataka kao što je Popiss, Kartas, i skalarni tipovi.

Elementi na YAML popisu definirani su znakom "-" i svi dijele istu razinu uvlačenja:

yamlconfig: popis: - stavka1 - stavka2 - stavka3 - stavka4

Za usporedbu, ekvivalent zasnovan na svojstvima koristi indekse:

yamlconfig.list [0] = item1 yamlconfig.list [1] = item2 yamlconfig.list [2] = item3 yamlconfig.list [3] = item4

Za više primjera, slobodno pogledajte naš članak o tome kako definirati popise i karte pomoću YAML-a i datoteka svojstava.

Zapravo, hijerarhijska priroda YAML značajno poboljšava čitljivost u usporedbi s datotekama svojstava. Još jedna zanimljiva značajka YAML-a je mogućnost definiranja različitih svojstava za različite proljetne profile.

Vrijedno je spomenuti da Spring Boot pruža izvanmrežnu podršku za YAML konfiguraciju. Dizajn, Spring Boot učitava konfiguracijska svojstva iz primjena.iml pri pokretanju bez ikakvog dodatnog rada.

3. Povezivanje YAML popisa s jednostavnim Popis predmeta

Spring Boot nudi @ConfigurationProperties bilješka na pojednostaviti logiku mapiranja podataka vanjske konfiguracije u objektni model.

U ovom ćemo odjeljku koristiti @ConfigurationProperties za povezivanje YAML popisa u Popis.

Počinjemo s definiranjem jednostavnog popisa u primjena.iml:

primjena: profili: - razvoj - test - prod - 1 - 2

Zatim ćemo stvoriti jednostavan ApplicationProps POJO da drži logiku vezanja našeg YAML popisa na a Popis odobjekti:

@Component @ConfigurationProperties (prefix = "application") javna klasa ApplicationProps {privatni profili popisa; // dobivač i postavljač}

The ApplicationProps razred treba ukrasiti @ConfigurationProperties da izrazi namjeru mapiranja svih svojstava YAML s navedenim prefiksom na objekt od ApplicationProps.

Obvezati profili Popis samo trebamo definirati polje tipa Popis i @ConfigurationProperties anotacija će se pobrinuti za ostalo.

Primijetite da registriramo ApplicationProps razred kao normalni proljetni grah koji koristi @Komponenta. Kao rezultat toga, možemo ga ubrizgati u druge razrede na isti način kao i bilo koji drugi proljetni grah.

Napokon ubrizgavamo ApplicationProps grah u testnu klasu i provjeri je li naš profili YAML popis ispravno se ubrizgava kao Popis:

@ExtendWith (SpringExtension.class) @ContextConfiguration (inicijalizatori = ConfigFileApplicationContextInitializer.class) @EnableConfigurationProperties (value = ApplicationProps.class) klasa YamlSimpleListUnitTest {@AutowiredPPPropsProps; @Test public void whenYamlList_thenLoadSimpleList () {assertThat (applicationProps.getProfiles (). Get (0)). IsEqualTo ("dev"); assertThat (applicationProps.getProfiles (). get (4) .getClass ()). isEqualTo (Integer.class); assertThat (applicationProps.getProfiles (). size ()). isEqualTo (5); }}

4. Povezivanje YAML popisa sa složenim popisima

Sada, zaronimo dublje i pogledajte kako ubaciti ugniježđene YAML popise u složene strukturirane Popiss.

Prvo, dodajmo nekoliko ugniježđenih popisa primjena.iml:

aplikacija: // ... rekviziti: - naziv: YamlList url: //yamllist.dev opis: Mapiranje popisa u Yamlu na popis objekata u Spring Boot - ip: 10.10.10.10 port: 8091 - email: [email protected] kontakt : //yamllist.dev/contact korisnici: - korisničko ime: lozinka administratora: [zaštićena e-poštom] @ uloge: - PROČITAJTE - PIŠITE - POGLEDAJTE - IZBRIŠI - korisničko ime: lozinka za goste: [zaštićena e-pošta] uloge: - POGLEDAJTE

U ovom ćemo primjeru vezati rekviziti svojstvo a Popis. Slično ćemo mapirati korisnika u a Popis od Korisnik predmeta.

Budući da svaki element rekviziti unos sadrži različite ključeve, a zatim ga možemo ubrizgati kao a Popis od Kartas. Svakako pogledajte naš članak o ubrizgavanju mape iz YAML datoteke u Spring Boot.

Međutim, u slučaju korisnika, sve stavke dijele iste ključeve, kako bismo pojednostavili njegovo mapiranje, možda ćemo morati stvoriti namjenski Korisnik klasa za enkapsulaciju ključeva kao polja:

javna klasa ApplicationProps {// ... privatni popis rekviziti; privatni korisnici popisa; // getteri i postavljači javna statička klasa User {private String korisničko ime; privatna lozinka za niz; uloge privatnog popisa; // geteri i postavljači}}

Sada provjeravamo jesu li naši ugniježđeni YAML popisi pravilno mapirani:

@ExtendWith (SpringExtension.class) @ContextConfiguration (inicijalizatori = ConfigFileApplicationContextInitializer.class) @EnableConfigurationProperties (value = ApplicationProps.class) klasa YamlComplexListsUnitTest {@AutowiredProfil ApplicationProps; @Test public void whenYamlNestedLists_thenLoadComplexLists () {assertThat (applicationProps.getUsers (). Get (0) .getPassword ()). IsEqualTo ("[email protected] @"); assertThat (applicationProps.getProps (). get (0) .get ("name")). isEqualTo ("YamlList"); assertThat (applicationProps.getProps (). get (1) .get ("port"). getClass ()). isEqualTo (Integer.class); }}

5. Zaključak

U ovom uputstvu naučili smo kako mapirati YAML popise u Javu Popiss. Također smo provjerili kako povezati složene popise s prilagođenim POJO-ovima.

Kao i uvijek, cjeloviti izvorni kod za ovaj članak dostupan je na GitHubu.


$config[zx-auto] not found$config[zx-overlay] not found