Korištenje application.yml vs application.properties u Spring Boot-u

1. Pregled

Uobičajena praksa u Spring Boot-u je korištenje vanjske konfiguracije za definiranje naših svojstava. To nam omogućuje upotrebu istog aplikacijskog koda u različitim okruženjima.

Možemo koristiti datoteke svojstava, YAML datoteke, varijable okruženja i argumente naredbenog retka.

U ovom kratkom vodiču istražit ćemo glavne razlike između svojstava i YAML datoteka.

2. Konfiguracija svojstava

Prema zadanim postavkama Spring Boot može pristupiti konfiguracijama postavljenim u primjena.svojstva datoteka koja koristi format ključ / vrijednost:

spring.datasource.url = jdbc: h2: dev spring.datasource.username = SA spring.datasource.password = lozinka

Ovdje je svaki redak jedna konfiguracija. Stoga moramo izraziti hijerarhijske podatke koristeći iste prefikse za naše ključeve. I, u ovom primjeru, pripada svaki ključ proljeće.dataizvor.

2.1. Rezervisari u svojstvima

Unutar svojih vrijednosti možemo koristiti rezervirane znakove s ${} sintaksa da se odnosi na sadržaj drugih ključeva, svojstva sustava ili varijable okruženja.

app.name = MyApp app.description = $ {app.name} je aplikacija Spring Boot

2.2. Struktura popisa

Ako imamo iste vrste svojstava s različitim vrijednostima, strukturu popisa možemo predstaviti indeksima polja:

application.servers [0] .ip = 127.0.0.1 application.servers [0] .path = / path1 application.servers [1] .ip = 127.0.0.2 application.servers [1] .path = / path2 application.servers [ 2] .ip = 127.0.0.3 application.servers [2] .path = / path3

3. YAML konfiguracija

3.1. YAML format

Kao i datoteke svojstava Java, u našoj aplikaciji Spring Boot možemo koristiti i konfiguracijske datoteke temeljene na YAML-u. YAML je prikladan format za specificiranje hijerarhijskih podataka o konfiguraciji.

Uzmimo sada isti primjer iz naše datoteke svojstava i pretvorimo ga u YAML:

proljeće: izvor podataka: lozinka: url lozinke: jdbc: h2: dev korisničko ime: SA

To može biti čitljivije od njegove alternative datoteke svojstava, jer ne sadrži ponovljene prefikse.

3.2. Struktura popisa

YAML ima sažetiji format za izražavanje popisa:

aplikacija: poslužitelji: - ip: '127.0.0.1' put: '/ path1' - ip: '127.0.0.2' path: '/ path2' - ip: '127.0.0.3' path: '/ path3'

3.3. Višestruki profili

Bonus upotrebe YAML-a je taj što može pohraniti više profila u istu datoteku. I, u YAML-u, tri crtice označavaju početak novog dokumenta. Dakle, svi se profili mogu opisati u istoj datoteci:

datoteka dnevnika: ime: myapplication.log spring: profili: uprizorenje izvora podataka: lozinka: '' url: jdbc: h2: uprizorenje korisničko ime: SA --- proljeće: profili: integracija izvora podataka: lozinka: 'lozinka' url: jdbc: mysql: // localhost: 3306 / db_integration korisničko ime: korisnik

U ovom primjeru imamo dva Proljeće odjeljci s različitim profili označena. Također, možemo imati zajednički skup svojstava na korijenskoj razini - u ovom slučaju, prijava.datoteka.ime svojstvo će biti isto u svim profilima.

3.4. Profili u više datoteka

Kao alternativu postojanju različitih profila u istoj datoteci, možemo pohraniti više profila u različite datoteke. I, ovo je jedina metoda dostupna pri korištenju Svojstva datoteke.

To postižemo stavljanjem imena profila u naziv datoteke - na primjer, aplikacija-razv.iml ili svojstva- aplikacija.vlasnosti.

4. Korištenje proljetnog čizma

Sad kad smo definirali naše konfiguracije, pogledajmo kako im pristupiti.

4.1. Vrijednost Bilješka

Vrijednosti svojih svojstava možemo ubrizgati pomoću @Vrijednost napomena:

@Value ("$ {key.something}") private String injectedProperty;

Evo, imanje ključ.nešto ubrizgava se ubrizgavanjem polja u jedan od naših predmeta.

4.2. Okoliš Apstrakcija

Vrijednost nekretnine možemo dobiti i pomoću Okoliš API:

@Autowired private Environment env; javni String getSomeKey () {return env.getProperty ("key.something"); } 

4.3. ConfigurationProperties Bilješka

Napokon, možemo koristiti i @ConfigurationProperties napomena za povezivanje naših svojstava s strukturiranim objektima sigurnim za tip:

@ConfigurationProperties (prefix = "mail") javna klasa ConfigProperties {Ime niza; Opis niza; ...

5. Zaključak

U ovom smo članku vidjeli neke razlike između Svojstva i yml Konfiguracijske datoteke Spring Boot. Također smo vidjeli kako se njihove vrijednosti mogu odnositi na druga svojstva. Napokon smo pogledali kako ubaciti vrijednosti u svoje vrijeme izvođenja.

Kao i uvijek, svi primjeri koda dostupni su na GitHub-u.


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