Tavaszi YAML vs Tulajdonságok

1. Bemutatkozás

A YAML egy emberbarát jelölés, amelyet a konfigurációs fájlokban használnak. Miért preferálnánk ezt az adatsorosítást a Spring Boot tulajdonságfájljával szemben? Az olvashatóság és az ismétlés csökkentése mellett a YAML a tökéletes nyelv a Konfiguráció kódként történő írásához a telepítésekhez.

Ugyanígy a YAML használata a Spring DevOps számára megkönnyíti a konfigurációs változók tárolását a környezetben, ahogy azt a 12 Faktor Hitelesítő javasolja.

Ebben az oktatóanyagban összehasonlítjuk a Spring YAML és a tulajdonságok fájlt, hogy ellenőrizzük az egyik használatának fő előnyeit a másikkal szemben. De ne feledje, hogy a YAML kiválasztása a tulajdonságok fájlkonfigurációja felett néha a személyes ízlés döntése.

2. YAML jelölés

A YAML egy rekurzív rövidítést jelent a „A YAML nem jelölőnyelv“. A következő jellemzőket biztosítja:

  • Több egyértelműség és emberbarát
  • Tökéletes a hierarchikus konfigurációs adatokhoz
  • Támogatja az olyan képességeket, mint a térképek, listák és skalár típusok

Ezek a képességek teszik a YAML-t tökéletes társává Tavaszi konfigurációs fájlok. Vigyázat itt azoknak, akik a YAML-lel kezdik: az írás kissé unalmas lehet az elején a behúzási szabályai miatt.

Lássuk, hogyan működik!

3. Tavaszi YAML-konfiguráció

Amint azt az előző szakaszokban említettük, a YAML a konfigurációs fájlok rendkívüli adatformátuma. Sokkal jobban olvasható, és a tulajdonságfájlhoz képest továbbfejlesztett képességeket kínál. Ezért van értelme ezt a jelölést ajánlani a tulajdonságfájl-konfiguráció felett. Továbbá, az 1.2-es verziótól kezdve a YAML a JSON supersetje.

Ezenkívül tavasszal a műtárgyon kívül elhelyezett konfigurációs fájlok felülírják a csomagolt edény belsejében található fájlokat. A Spring konfiguráció másik érdekes jellemzője a környezeti változók futás közbeni hozzárendelésének lehetősége. Ez rendkívül fontos a DevOps telepítéseknél.

A rugós profilok lehetővé teszik a környezetek elkülönítését, és különböző tulajdonságokat alkalmaznak rájuk. A YAML lehetőséget ad arra, hogy több profil is szerepeljen ugyanabban a fájlban.

Megjegyzés: ez a szolgáltatás a Spring Boot 2.4.0 verziójú tulajdonságfájlok esetében is támogatott.

Esetünkben telepítési célokra három: tesztelés, fejlesztés és gyártás:

tavasz: profilok: aktív: - teszt --- rugó: konfigurálás: aktiválás: on-profil: teszt neve: test-YAML környezet: szerverek tesztelése: - www.abc.test.com - www.xyz.test.com - - tavasz: config: activation: on-profile: prod név: prod-YAML környezet: termelési kiszolgálók: - www.abc.com - www.xyz.com --- spring: config: activation: on-profile: dev név: $ {DEV_NAME: dev-YAML} környezet: fejlesztőkiszolgálók: - www.abc.dev.com - www.xyz.dev.com

Megjegyzés: ha Spring Boot verziót használunk a 2.4.0 előtt, akkor a tavasz.profilok tulajdonság helyett spring.config.activate.on-profile itt használtuk.

Most ellenőrizzük a tavasz.profilok.aktív tulajdonság, amely alapértelmezés szerint hozzárendeli a tesztkörnyezetet. A műtárgyat különböző profilok segítségével áthelyezhetjük anélkül, hogy újra elkészítenénk a forráskódot.

A tavasz másik érdekes jellemzője, hogy a profilt a környezeti változón keresztül engedélyezheti:

export SPRING_PROFILES_ACTIVE = dev

A tesztelés szakaszban látni fogjuk ennek a környezeti változónak a relevanciáját. Végül konfigurálhatjuk a YAML tulajdonságokat, közvetlenül hozzáadva az értéket a környezettől:

név: $ {DEV_NAME: dev-YAML}

Láthatjuk, hogy ha nincs beállítva környezeti változó, akkor alapértelmezett érték dev-YAML használt.

4. Az ismétlés és az olvashatóság csökkentése

A YAML hierarchikus felépítése lehetőséget nyújt a konfigurációs tulajdonságok fájljának felső szintjeinek csökkentésére. Nézzük meg a különbségeket egy példával:

komponens: idm: url: myurl felhasználó: felhasználói jelszó: jelszó leírása:> ennek hosszú leírási szolgáltatásnak kell lennie: url: myurlservice token: token description:> ennek egy másik hosszú leírásnak kell lennie

Ugyanez a konfiguráció feleslegessé válna a tulajdonságfájl használatával:

component.idm.url = myurl component.idm.user = felhasználói component.idm.password = jelszó component.idm.description = ennek hosszúnak kell lennie \ description component.service.url = myurlservice component.service.token = token komponens. service.description = ennek egy másik hosszú leírásnak kell lennie

A YAML hierarchikus jellege nagymértékben javítja az olvashatóságot. Nem csak az ismétlések elkerülése a kérdés, hanem a jól használható behúzás is tökéletesen leírja, hogy miről is szól a konfiguráció és mire való. A YAML használatával, akárcsak a visszavágó \ tulajdonság tulajdonságú fájlok esetén, több sorra is lehet bontani a tartalmat > karakter.

5. Listák és térképek

Konfigurálhatunk listákat és térképeket a YAML és a tulajdonság fájl segítségével.

Az értékek hozzárendeléséhez és egy listában történő tárolásához kétféle módszer létezik:

szerverek: - www.abc.test.com - www.xyz.test.com external: [www.abc.test.com, www.xyz.test.com]

Mindkét példa ugyanazt az eredményt adja. A tulajdonságfájlt használó egyenértékű konfigurációt nehezebb lenne elolvasni:

szerverek [0] = www.abc.test.com szerverek [1] = www.xyz.test.com külső = www.abc.test.com, www.xyz.test.com

Ismét a YAML verzió emberileg olvashatóbb és egyértelműbb.

Ugyanígy konfigurálhatjuk a térképeket is:

map: firstkey: key1 secondkey: key2

6. Tesztelés

Most ellenőrizzük, hogy minden a várakozásoknak megfelelően működik-e. Ha ellenőrizzük az alkalmazás naplózását, láthatjuk, hogy az alapértelmezés szerint kiválasztott környezet tesztel:

2020-06-11 13: 58: 28.846 INFO 10720 --- [main] com.baeldung.yaml.MyApplication: ... környezet használata: tesztelés neve: test-YAML szerverek: [www.abc.test.com, www .xyz.test.com] külső: [www.abc.test.com, www.xyz.test.com] térkép: {firstkey = key1, secondkey = key2} Idm: URL: myurl Felhasználó: felhasználói Jelszó: Jelszó Leírás: ennek hosszú leírásnak kell lennie Szolgáltatás: Url: myurlservice Token: token Leírás: ennek egy másik hosszú leírásnak kell lennie

Konfigurációval felülírhatjuk a nevet DEV_NAME a környezetben:

export DEV_NAME = new-dev-YAML

Láthatjuk, hogy a környezet neve megváltoztatja az alkalmazás dev profilú végrehajtását:

2020-06-11 17: 00: 45.459 INFO 19636 --- [main] com.baeldung.yaml.MyApplication: ... környezet használata: fejlesztés neve: new-dev-YAML szerverek: [www.abc.dev.com , www.xyz.dev.com]

Futtassuk a termelési környezetet a SPRING_PROFILES_ACTIVE = prod:

export SPRING_PROFILES_ACTIVE = prod 2020-06-11 17: 03: 33.074 INFO 20716 --- [main] ... környezet: termelés neve: prod-YAML szerverek: [www.abc.com, www.xyz.com]

7. Következtetés

Ebben az oktatóanyagban leírtuk a YAML konfiguráció használatának bonyolultságait a tulajdonságfájlhoz képest.

Ezt megmutattuk A YAML emberbarát képességeket biztosít, csökkenti az ismétlést és tömörebb, mint a tulajdonságfájl-változata.

Mint mindig, a kód elérhető a GitHubon.