Vår YAML vs eiendommer

1. Introduksjon

YAML er en menneskelig vennlig notasjon som brukes i konfigurasjonsfiler. Hvorfor foretrekker vi denne dataserialiseringen fremfor eiendomsfilen i Spring Boot? Foruten lesbarhet og reduksjon av repetisjon, er YAML det perfekte språket for å skrive konfigurasjon som kode for distribusjonene.

På samme måte forenkler bruken av YAML for Spring DevOps lagring av konfigurasjonsvariablene i miljøet som 12 Factor Authenticator anbefaler.

I denne opplæringen vil vi sammenligne Spring YAML versus egenskaper-filen for å sjekke de viktigste fordelene ved å bruke den ene over den andre. Men husk at valg av YAML i forhold til filkonfigurasjon av egenskaper er noen ganger en beslutning om personlig smak.

2. YAML-notasjon

YAML står for et rekursivt akronym for “YAML er ikke merkespråk“. Det gir følgende egenskaper:

  • Mer klarhet og menneskelig vennlighet
  • Perfekt for hierarkiske konfigurasjonsdata
  • Den støtter forbedringsfunksjoner som kart, lister og skalartyper

Disse mulighetene gjør YAML til den perfekte følgesvenn for Vårkonfigurasjonsfiler. Et ord med forsiktighet her for de som begynner med YAML: å skrive det kan være litt kjedelig i begynnelsen på grunn av dets innrykkingsregler.

La oss se hvordan det fungerer!

3. Vår YAML-konfigurasjon

Som det ble nevnt i forrige seksjoner, er YAML et ekstraordinært dataformat for konfigurasjonsfiler. Det er mye mer lesbart, og det gir forbedrede muligheter over eiendomsfilen. Derfor er det fornuftig å anbefale denne notasjonen over konfigurasjon av egenskapsfilen. Videre, fra versjon 1.2, er YAML et supersett av JSON.

I tillegg overstyrer konfigurasjonsfilene som er plassert utenfor gjenstanden de som er inne i den pakket glasset. Et annet interessant trekk ved vårkonfigurasjon er muligheten for å tilordne miljøvariabler ved kjøretid. Dette er ekstremt viktig for DevOps-distribusjoner.

Fjærprofiler gjør det mulig å skille miljøene og bruke forskjellige egenskaper på dem. YAML legger til muligheten for å inkludere flere profiler i samme fil.

Merk: denne funksjonen støttes også for eiendomsfiler med Spring Boot 2.4.0.

I vårt tilfelle har vi for distribusjonsformål tre: testing, utvikling og produksjon:

vår: profiler: aktiv: - test --- vår: konfigurering: aktiver: på profil: testnavn: test-YAML-miljø: testservere: - www.abc.test.com - www.xyz.test.com - - vår: config: aktiver: on-profile: prod navn: prod-YAML miljø: produksjonsservere: - www.abc.com - www.xyz.com --- spring: config: aktiver: on-profile: dev navn: $ {DEV_NAME: dev-YAML} -miljø: utviklingsservere: - www.abc.dev.com - www.xyz.dev.com

Merk: hvis vi bruker en Spring Boot-versjon før 2.4.0, bør vi bruke våren.profiler eiendom i stedet for spring.config.activate.on-profile vi brukte her.

La oss nå sjekke våren.profiler.aktiv egenskap som tildeler testmiljøet som standard. Vi kan distribuere gjenstanden ved hjelp av forskjellige profiler uten å bygge kildekoden igjen.

En annen interessant funksjon på våren er at du kan aktivere profilen via miljøvariabelen:

eksporter SPRING_PROFILES_ACTIVE = dev

Vi ser relevansen av denne miljøvariabelen i Testing-delen. Til slutt kan vi konfigurere YAML-egenskaper som tildeler verdien direkte fra miljøet:

navn: $ {DEV_NAME: dev-YAML}

Vi kan se at hvis ingen miljøvariabler er konfigurert, er en standardverdi dev-YAML benyttes.

4. Reduksjon av gjentakelse og lesbarhet

Den hierarkiske strukturen til YAML gir måter å redusere de øvre nivåene av konfigurasjonsegenskapsfilen. La oss se forskjellene med et eksempel:

komponent: idm: url: myurl bruker: brukerpassord: passordbeskrivelse:> dette skal være en lang beskrivelse tjeneste: url: myurlservice token: token beskrivelse:> dette skal være en annen lang beskrivelse

Den samme konfigurasjonen vil bli overflødig ved å bruke egenskapsfilen:

component.idm.url = myurl component.idm.user = bruker component.idm.password = passord component.idm.description = dette skal være en lang \ beskrivelse component.service.url = myurlservice component.service.token = token komponent. service.description = dette skal være en annen lang \ beskrivelse

Den hierarkiske naturen til YAML forbedrer lesbarheten sterkt. Det er ikke bare et spørsmål om å unngå repetisjoner, men også fordypningen, godt brukt, beskriver perfekt hva konfigurasjonen handler om og hva det er for. Med YAML, som i tilfeller med egenskapsfil med tilbakeslag \, er det mulig å dele innholdet i flere linjer med > karakter.

5. Lister og kart

Vi kan konfigurere lister og kart ved hjelp av YAML og egenskapsfil.

Det er to måter å tilordne verdier og lagre dem i en liste:

servere: - www.abc.test.com - www.xyz.test.com ekstern: [www.abc.test.com, www.xyz.test.com]

Begge eksemplene gir det samme resultatet. Den tilsvarende konfigurasjonen ved bruk av egenskaper-filen vil være vanskeligere å lese:

servere [0] = www.abc.test.com servere [1] = www.xyz.test.com ekstern = www.abc.test.com, www.xyz.test.com

Igjen er YAML-versjonen mer lesbar og tydelig.

På samme måte kan vi konfigurere kart:

map: firstkey: key1 secondkey: key2

6. Testing

La oss nå sjekke om alt fungerer som forventet. Hvis vi sjekker loggingen av applikasjonen, kan vi se at miljøet som er valgt som standard tester:

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] ekstern: [www.abc.test.com, www.xyz.test.com] kart: {firstkey = key1, secondkey = key2} Idm: Url: myurl User: user Password: password Description: dette skal være en lang beskrivelse Tjeneste: Url: myurlservice Token: token Beskrivelse: dette skal være en annen lang beskrivelse

Vi kan overskrive navnet ved å konfigurere DEV_NAME i miljøet:

eksporter DEV_NAME = new-dev-YAML

Vi kan se at navnet på miljøet endres ved å kjøre applikasjonen med dev-profil:

2020-06-11 17: 00: 45.459 INFO 19636 --- [main] com.baeldung.yaml.MyApplication: ... ved hjelp av miljø: utviklingsnavn: new-dev-YAML servere: [www.abc.dev.com , www.xyz.dev.com]

La oss løpe for produksjonsmiljøet ved hjelp av SPRING_PROFILES_ACTIVE = prod:

eksporter SPRING_PROFILES_ACTIVE = prod 2020-06-11 17: 03: 33.074 INFO 20716 --- [main] ... bruker miljø: produksjonsnavn: prod-YAML-servere: [www.abc.com, www.xyz.com]

7. Konklusjon

I denne opplæringen beskrev vi komplikasjonene ved bruk av YAML-konfigurasjon sammenlignet med egenskapsfilen.

Vi viste det YAML gir muligheter for menneskelig brukervennlighet, det reduserer repetisjon og er mer kortfattet enn dens filfilvariant.

Som alltid er koden tilgjengelig på GitHub.


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