YAML na zoznam objektov v Spring Boot

1. Prehľad

V tomto krátkom tutoriáli sa pozrieme bližšie ako mapovať zoznam YAML na a Zoznam v Spring Boot.

Najprv začneme základom, ako definovať zoznamy v YAML. Potom sa pozrieme hlbšie na to, ako viazať zoznamy YAML Zoznams predmetov.

2. Stručná rekapitulácia zoznamov v YAML

Stručne povedané, YAML je človekom čitateľný štandard serializácie údajov, ktorý poskytuje stručný a jasný spôsob zápisu konfiguračných súborov. Dobrá vec na YAML je skutočnosť, že podporuje viac dátových typov ako napr Zoznams, Mapas, a skalárne typy.

Prvky v zozname YAML sú definované pomocou znaku „-“ a všetky majú rovnakú úroveň odsadenia:

yamlconfig: zoznam: - položka1 - položka2 - položka3 - položka4

Pre porovnanie, ekvivalent založený na vlastnostiach používa indexy:

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

Ďalšie príklady nájdete v našom článku o definovaní zoznamov a máp pomocou súborov YAML a vlastností.

V skutočnosti je to hierarchická povaha YAML výrazne zvyšuje čitateľnosť v porovnaní so súbormi vlastností. Ďalšou zaujímavou vlastnosťou YAML je možnosť definovať rôzne vlastnosti pre rôzne profily pružiny.

Za zmienku stojí, že Spring Boot poskytuje out-of-box podporu pre konfiguráciu YAML. Podľa návrhu Spring Boot načítava konfiguračné vlastnosti z aplikácia.yml pri štarte bez akejkoľvek práce navyše.

3. Viazanie zoznamu YAML na jednoduchý Zoznam predmetov

Spring Boot poskytuje @ConfigurationProperties anotácia k zjednodušiť logiku mapovania externých konfiguračných údajov do objektového modelu.

V tejto časti budeme používať @ConfigurationProperties viazať zoznam YAML na a Zoznam.

Začneme definovaním jednoduchého zoznamu v aplikácia.yml:

použitie: profily: - vývoj - test - prod - 1 - 2

Potom vytvoríme jednoduchý ApplicationProps POJO drží logiku viazania nášho zoznamu YAML na a Zoznam zobjekty:

@Component @ConfigurationProperties (prefix = "aplikácia") verejná trieda ApplicationProps {profily súkromného zoznamu; // getter a setter}

The ApplicationProps triedy je potrebné zdobiť @ConfigurationProperties vyjadriť zámer mapovania všetkých vlastností YAML so zadanou predponou na objekt ApplicationProps.

Viazať profilov zoznamu stačí definovať pole typu Zoznam a @ConfigurationProperties o zvyšok sa postará anotácia.

Všimnite si, že registrujeme ApplicationProps triedy ako normálna jarná fazuľa s použitím @ Komponent. Vo výsledku ho môžeme vstreknúť do iných tried rovnakým spôsobom ako do ktorejkoľvek inej jarnej fazule.

Nakoniec injikujeme ApplicationProps fazuľa do testovacej triedy a overte, či je naša profilov Zoznam YAML je správne vložený ako Zoznam:

@ExtendWith (SpringExtension.class) @ContextConfiguration (initializers = ConfigFileApplicationContextInitializer.class) @EnableConfigurationProperties (value = ApplicationProps.class) trieda YamlSimpleListUnitTest {@Autowired súkromné ​​ApplicationProps applicationProps; @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. Viazanie zoznamov YAML na zložité zoznamy

Teraz sa ponoríme hlbšie a uvidíme, ako vložiť vnorené zoznamy YAML do zložitých štruktúrovaných Zoznams.

Najskôr pridajme niekoľko vnorených zoznamov do aplikácia.yml:

aplikácia: // ... rekvizity: - názov: YamlList url: //yamllist.dev description: Mapovanie zoznamu v Yaml na zoznam objektov v Spring Boot - ip: 10.10.10.10 port: 8091 - e-mail: [chránený e-mailom] kontakt : //yamllist.dev/kontaktovať používateľov: - používateľské meno: heslo správcu: [chránené e-mailom] @ roly: - ČÍTAŤ - PÍSŤ - ZOBRAZIŤ - ODSTRÁNIŤ - používateľské meno: heslo hosťa: [chránené e-mailom] role: - ZOBRAZI

V tomto príklade zaviažeme rekvizity majetok do a Zoznam. Podobne zmapujeme používateľov do a Zoznam z Používateľ predmety.

Pretože každý prvok rekvizity záznam obsahuje rôzne kľúče, potom ho môžeme vložiť ako a Zoznam z Mapas. Nezabudnite si prečítať náš článok o tom, ako vložiť mapu zo súboru YAML do Spring Boot.

Avšak, v prípade používateľov, všetky položky zdieľajú rovnaké kľúče, aby sme zjednodušili jeho mapovanie, možno budeme musieť vytvoriť vyhradený modul Používateľ triedy na zapuzdrenie kľúčov ako polí:

verejná trieda ApplicationProps {// ... súkromný zoznam rekvizity; súkromní používatelia zoznamu; // getre a setre verejná statická trieda User {private String username; súkromné ​​reťazcové heslo; roly súkromného zoznamu; // zakladatelia a zakladatelia}}

Teraz overíme, či sú naše vnorené zoznamy YAML správne namapované:

@ExtendWith (SpringExtension.class) @ContextConfiguration (initializers = ConfigFileApplicationContextInitializer.class) @EnableConfigurationProperties (value = ApplicationProps.class) trieda YamlComplexListsUnitTest {@Autowired private ApplicationProps applicationProps; @Test public void whenYamlNestedLists_thenLoadComplexLists () {assertThat (applicationProps.getUsers (). Get (0) .getPassword ()). IsEqualTo ("[chránený e-mailom] @"); assertThat (applicationProps.getProps (). get (0) .get ("name")). isEqualTo ("YamlList"); assertThat (applicationProps.getProps (). get (1) .get ("port"). getClass ()). isEqualTo (Integer.class); }}

5. Záver

V tomto tutoriáli sme sa naučili, ako mapovať zoznamy YAML do Javy Zoznams. Tiež sme skontrolovali, ako viazať zložité zoznamy na vlastné POJO.

Úplný zdrojový kód tohto článku je ako vždy k dispozícii na GitHub.


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