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.