Forår YAML vs egenskaber

1. Introduktion

YAML er en menneskelig venlig notation, der bruges i konfigurationsfiler. Hvorfor foretrækker vi denne dataserialisering frem for egenskabsfilen i Spring Boot? Udover læsbarhed og reduktion af gentagelse er YAML det perfekte sprog til at skrive konfiguration som kode for implementeringerne.

På samme måde letter brugen af ​​YAML til Spring DevOps lagring af konfigurationsvariablerne i miljøet som 12 Factor Authenticator anbefaler.

I denne vejledning sammenligner vi Spring YAML versus egenskabsfilen for at kontrollere de største fordele ved at bruge den ene over den anden. Men husk, valget af YAML i forhold til konfiguration af egenskabsfiler er undertiden en beslutning om personlig smag.

2. YAML Notation

YAML står for et rekursivt akronym for “YAML er ikke markup sprog“. Det giver følgende egenskaber:

  • Mere klarhed og menneskelig venlighed
  • Perfekt til hierarkiske konfigurationsdata
  • Det understøtter forbedringsfunktioner såsom kort, lister og skalartyper

Disse muligheder gør YAML til den perfekte ledsager til Forårskonfigurationsfiler. Et forsigtighedsord her for dem, der starter med YAML: at skrive det kan være lidt kedeligt i starten på grund af dets indrykningsregler.

Lad os se, hvordan det fungerer!

3. Spring YAML-konfiguration

Som det blev nævnt i de foregående afsnit, er YAML et ekstraordinært dataformat til konfigurationsfiler. Det er meget mere læsbart, og det giver forbedrede muligheder over egenskabsfilen. Derfor er det fornuftigt at anbefale denne notation over egenskabernes filkonfiguration. Desuden er YAML fra version 1.2 et supersæt af JSON.

Derudover tilsidesætter konfigurationsfilerne, der er placeret uden for artefakten, dem, der er inde i den pakkede krukke. Et andet interessant træk ved Spring-konfiguration er muligheden for at tildele miljøvariabler under kørsel. Dette er ekstremt vigtigt for DevOps-implementeringer.

Fjederprofiler gør det muligt at adskille miljøerne og anvende forskellige egenskaber på dem. YAML tilføjer muligheden for at inkludere flere profiler i den samme fil.

Bemærk: denne funktion understøttes også for egenskabsfiler med Spring Boot 2.4.0.

I vores tilfælde har vi til implementeringsformål tre: test, udvikling og produktion:

fjeder: profiler: aktiv: - test --- fjeder: config: aktiver: on-profil: testnavn: test-YAML miljø: test servere: - www.abc.test.com - www.xyz.test.com - - spring: config: aktivere: on-profile: prod navn: prod-YAML miljø: produktionsservere: - www.abc.com - www.xyz.com --- spring: config: aktivere: on-profile: dev navn: $ {DEV_NAME: dev-YAML} -miljø: udviklingsservere: - www.abc.dev.com - www.xyz.dev.com

Bemærk: hvis vi bruger en Spring Boot-version før 2.4.0, skal vi bruge spring.profiles ejendom i stedet for spring.config.activate.on-profile vi brugte her.

Lad os nu kontrollere spring.profiles.active egenskab, der som standard tildeler testmiljøet. Vi kan omplacere artefakten ved hjælp af forskellige profiler uden at opbygge kildekoden igen.

En anden interessant funktion i foråret er, at du kan aktivere profilen via miljøvariablen:

eksporter SPRING_PROFILES_ACTIVE = dev

Vi ser relevansen af ​​denne miljøvariabel i afsnittet Test. Endelig kan vi konfigurere YAML-egenskaber, der direkte tildeler værdien fra miljøet:

navn: $ {DEV_NAME: dev-YAML}

Vi kan se, at hvis der ikke er konfigureret nogen miljøvariabel, er en standardværdi dev-YAML anvendes.

4. Reduktion af gentagelse og læsbarhed

Den hierarkiske struktur af YAML giver måder til at reducere de øvre niveauer af konfigurationsegenskabsfilen. Lad os se forskellene med et eksempel:

komponent: idm: url: myurl bruger: brugeradgangskode: adgangskodebeskrivelse:> dette skal være en lang beskrivelse service: url: myurlservice token: token beskrivelse:> dette skal være en anden lang beskrivelse

Den samme konfiguration bliver overflødig ved hjælp af egenskabsfilen:

component.idm.url = myurl component.idm.user = bruger component.idm.password = adgangskode 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 anden lang \ beskrivelse

Den hierarkiske natur af YAML forbedrer i høj grad læsbarheden. Det er ikke kun et spørgsmål om at undgå gentagelser, men også fordybningen, der er godt brugt, beskriver perfekt, hvad konfigurationen handler om, og hvad den er beregnet til. Med YAML er det som i egenskabsfilen med en tilbageslag \ muligt at opdele indholdet i flere linjer med > Karakter.

5. Lister og kort

Vi kan konfigurere lister og kort ved hjælp af YAML og egenskabsfilen.

Der er to måder at tildele værdier og gemme dem på en liste:

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

Begge eksempler giver det samme resultat. Den tilsvarende konfiguration ved hjælp af egenskabsfilen ville være sværere at læse:

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

Igen er YAML-versionen mere menneskelig og tydelig.

På samme måde kan vi konfigurere kort:

kort: første tast: tast1 anden tast: tast2

6. Testning

Lad os nu kontrollere, om alt fungerer som forventet. Hvis vi kontrollerer logning af applikationen, kan vi se, at det valgte miljø som standard tester:

2020-06-11 13: 58: 28.846 INFO 10720 --- [main] com.baeldung.yaml.MyApplication: ... ved hjælp af miljø: testnavn: test-YAML-servere: [www.abc.test.com, www .xyz.test.com] ekstern: [www.abc.test.com, www.xyz.test.com] kort: {firstkey = key1, secondkey = key2} Idm: Url: myurl User: user Password: password Description: dette skal være en lang beskrivelse Service: Url: myurlservice Token: token Beskrivelse: dette skal være en anden lang beskrivelse

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

eksporter DEV_NAME = new-dev-YAML

Vi kan se, at navnet på miljøet ændres ved at udføre applikationen med dev-profil:

2020-06-11 17: 00: 45.459 INFO 19636 --- [main] com.baeldung.yaml.MyApplication: ... ved hjælp af miljø: udviklingsnavn: new-dev-YAML servere: [www.abc.dev.com , www.xyz.dev.com]

Lad os køre for produktionsmiljøet ved hjælp af SPRING_PROFILES_ACTIVE = prod:

eksport SPRING_PROFILES_ACTIVE = prod 2020-06-11 17: 03: 33.074 INFO 20716 --- [main] ... ved hjælp af miljø: produktionsnavn: prod-YAML-servere: [www.abc.com, www.xyz.com]

7. Konklusion

I denne vejledning beskrev vi kompleksiteten ved brugen af ​​YAML-konfiguration sammenlignet med egenskabsfilen.

Vi viste det YAML giver muligheder for menneskelig venlighed, det reducerer gentagelse og er mere kortfattet end dens egenskabsfilvariant.

Som altid er koden tilgængelig på GitHub.


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