Jarné vlastnosti YAML vs

1. Úvod

YAML je ľudsky prívetivý zápis používaný v konfiguračných súboroch. Prečo by sme uprednostnili túto serializáciu údajov pred súborom vlastností v Spring Boot? Okrem čitateľnosti a zníženia opakovania je YAML dokonalým jazykom na napísanie konfigurácie ako kódu pre nasadenia.

Rovnakým spôsobom použitie YAML pre Spring DevOps uľahčuje ukladanie konfiguračných premenných do prostredia, ako to odporúča 12 Factor Authenticator.

V tomto tutoriále porovnáme súbor Spring YAML verzus vlastnosti, aby sme skontrolovali hlavné výhody používania jedného oproti druhému. Pamätajte však, že výber YAML nad konfiguráciou súboru vlastností je niekedy rozhodnutím osobného vkusu.

2. YAML notácia

YAML znamená rekurzívna skratka pre „YAML nie je značkovací jazyk„. Poskytuje nasledujúce vlastnosti:

  • Viac zrozumiteľnosti a ľudskej prívetivosti
  • Perfektné pre hierarchické konfiguračné údaje
  • Podporuje vylepšovacie funkcie, ako sú mapy, zoznamy a skalárne typy

Vďaka týmto schopnostiam je YAML dokonalým spoločníkom Jarné konfiguračné súbory. Pre tých, ktorí začínajú s YAML, je tu opatrnosť: jeho písanie môže byť na začiatku trochu zdĺhavé kvôli jeho pravidlám odsadenia.

Pozrime sa, ako to funguje!

3. Jarná konfigurácia YAML

Ako už bolo spomenuté v predchádzajúcich častiach, YAML je mimoriadny formát údajov pre konfiguračné súbory. Je oveľa čitateľnejší a poskytuje vylepšené možnosti oproti súboru vlastností. Preto má zmysel odporúčať túto notáciu nad konfiguráciou súboru vlastností. Od verzie 1.2 je YAML navyše nadmnožinou JSON.

Na jar navyše konfiguračné súbory umiestnené mimo artefakt prepíšu tie vo vnútri zabalenej nádoby. Ďalšou zaujímavou vlastnosťou jarnej konfigurácie je možnosť priraďovať premenné prostredia za behu. To je pre nasadenia DevOps nesmierne dôležité.

Pružinové profily umožňujú oddeliť prostredia a použiť na ne rôzne vlastnosti. YAML pridáva možnosť zahrnúť do jedného súboru niekoľko profilov.

Poznámka: Táto funkcia je podporovaná aj pre súbory vlastností s Spring Boot 2.4.0.

V našom prípade budeme na účely nasadenia mať tri: testovanie, vývoj a výrobu:

jar: profily: aktívne: - test --- jar: konfigurácia: aktivovať: v profile: názov testu: prostredie test-YAML: testovacie servery: - www.abc.test.com - www.xyz.test.com - - jar: konfigurácia: aktivácia: v profile: názov prod: prostredie prod-YAML: produkčné servery: - www.abc.com - www.xyz.com --- jar: konfigurácia: aktivácia: v profile: názov dev: $ {DEV_NAME: dev-YAML} prostredie: vývojové servery: - www.abc.dev.com - www.xyz.dev.com

Poznámka: Ak používame verziu Spring Boot pred 2.4.0, mali by sme použiť jar.profily majetok namiesto spring.config.activate.on-profile sme tu použili.

Poďme teraz skontrolovať jarné.profily.aktívne vlastnosť, ktorá štandardne priraďuje testovacie prostredie. Artefakt môžeme znova nasadiť pomocou rôznych profilov bez toho, aby sme znova vytvorili zdrojový kód.

Ďalšou zaujímavou funkciou jari je, že profil môžete povoliť pomocou premennej prostredia:

export SPRING_PROFILES_ACTIVE = dev

Relevantnosť tejto premennej prostredia uvidíme v sekcii Testovanie. Nakoniec môžeme nakonfigurovať vlastnosti YAML, ktoré priamo priraďujú hodnotu z prostredia:

meno: $ {DEV_NAME: dev-YAML}

Vidíme, že ak nie je nakonfigurovaná žiadna premenná prostredia, predvolená hodnota dev-YAML sa používa.

4. Redukcia opakovania a čitateľnosti

Hierarchická štruktúra YAML poskytuje spôsoby zníženia vyšších úrovní súboru vlastností konfigurácie. Pozrime sa na rozdiely s príkladom:

komponent: idm: url: myurl užívateľ: heslo používateľa: popis hesla:> toto by mal byť dlhý popis služba: url: myurlservice token: popis tokenu:> mal by to byť ďalší dlhý popis

Rovnaká konfigurácia by sa stala nadbytočnou pomocou súboru vlastností:

component.idm.url = myurl component.idm.user = užívateľ component.idm.password = heslo component.idm.description = toto by mal byť dlhý \ description component.service.url = myurlservice component.service.token = tokenový komponent. service.description = toto by mal byť ďalší dlhý \ description

Hierarchická povaha YAML výrazne zvyšuje čitateľnosť. Nejde len o to, aby ste sa vyhli opakovaniu, ale aj o dobre použité odsadenie, ktoré dokonale popisuje, o čo v konfigurácii ide a na čo slúži. S YAML, rovnako ako v prípade súboru vlastností so spätnou lomkou \, je možné rozdeliť obsah na viac riadkov pomocou > znak.

5. Zoznamy a mapy

Zoznamy a mapy môžeme nakonfigurovať pomocou súboru YAML a súboru vlastností.

Existujú dva spôsoby, ako priradiť hodnoty a uložiť ich do zoznamu:

servery: - www.abc.test.com - externý www.xyz.test.com: [www.abc.test.com, www.xyz.test.com]

Oba príklady poskytujú rovnaký výsledok. Ekvivalentná konfigurácia pomocou súboru vlastností by sa čítala ťažšie:

servery [0] = www.abc.test.com servery [1] = www.xyz.test.com externé = www.abc.test.com, www.xyz.test.com

Verzia YAML je opäť čitateľnejšia a jasnejšia.

Rovnakým spôsobom môžeme nakonfigurovať mapy:

mapa: prvý kľúč: kľúč1 druhý kľúč: kľúč2

6. Testovanie

Teraz skontrolujme, či všetko funguje podľa očakávaní. Ak skontrolujeme protokolovanie aplikácie, môžeme vidieť, že predvolene vybrané prostredie testuje:

2020-06-11 13:58: 28.846 INFO 10720 --- [main] com.baeldung.yaml.MyApplication: ... using environment: testing name: test-YAML servers: [www.abc.test.com, www .xyz.test.com] externé: [www.abc.test.com, www.xyz.test.com] mapa: {firstkey = key1, secondkey = key2} IDM: Url: myurl Používateľ: používateľ Heslo: heslo Popis: toto by mal byť dlhý popis Služba: Url: myurlservice Token: token Popis: toto by mal byť ďalší dlhý popis

Názov môžeme prepísať nakonfigurovaním DEV_NAME v prostredí:

exportovať DEV_NAME = new-dev-YAML

Vidíme, že sa mení názov prostredia vykonávajúceho aplikáciu s dev profilom:

2020-06-11 17: 00: 45.459 INFO 19636 --- [hlavné] com.baeldung.yaml.MyApplication: ... pomocou prostredia: vývojový názov: servery new-dev-YAML: [www.abc.dev.com , www.xyz.dev.com]

Poďme bežať pre produkčné prostredie pomocou SPRING_PROFILES_ACTIVE = prod:

export SPRING_PROFILES_ACTIVE = prod 2020-06-11 17: 03: 33.074 INFO 20716 --- [hlavné] ... pomocou prostredia: názov produkcie: servery prod-YAML: [www.abc.com, www.xyz.com]

7. Záver

V tomto tutoriáli sme opísali zložitosti použitia konfigurácie YAML v porovnaní so súborom vlastností.

Ukázali sme to YAML poskytuje možnosti ľudskej prívetivosti, znižuje opakovanie a je stručnejší ako jeho variant súboru vlastností.

Ako vždy, kód je k dispozícii na GitHub.


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