Používanie application.yml vs application.properties v Spring Boot

1. Prehľad

Bežnou praxou v Spring Boot je použitie externej konfigurácie na definovanie našich vlastností. To nám umožňuje používať rovnaký aplikačný kód v rôznych prostrediach.

Môžeme použiť súbory vlastností, súbory YAML, premenné prostredia a argumenty príkazového riadku.

V tomto krátkom tutoriáli preskúmame hlavné rozdiely medzi vlastnosťami a súbormi YAML.

2. Konfigurácia vlastností

V predvolenom nastavení má Spring Boot prístup ku konfiguráciám nastaveným v application.properties súbor, ktorý používa formát kľúč - hodnota:

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

Tu je každý riadok samostatnou konfiguráciou. Preto musíme hierarchické údaje vyjadrovať pomocou rovnakých predpon pre naše kľúče. A v tomto príklade patrí každý kľúč jarný zdroj.

2.1. Zástupné symboly vo vlastnostiach

V rámci našich hodnôt môžeme zástupné symboly používať s ${} syntax, ktorá odkazuje na obsah ďalších kľúčov, vlastností systému alebo premenných prostredia.

app.name = MyApp app.description = $ {app.name} je aplikácia Spring Boot

2.2. Štruktúra zoznamu

Ak máme rovnaký druh vlastností s rôznymi hodnotami, môžeme reprezentovať štruktúru zoznamu pomocou indexov polí:

application.servers [0] .ip = 127.0.0.1 application.servers [0] .path = / cesta1 application.servers [1] .ip = 127.0.0.2 application.servers [1] .path = / cesta2 application.servers [ 2] .ip = 127.0.0.3 application.servers [2] .path = / cesta3

3. Konfigurácia YAML

3.1. Formát YAML

Okrem súborov vlastností Java môžeme v našej aplikácii Spring Boot použiť aj konfiguračné súbory založené na YAML. YAML je vhodný formát na špecifikáciu hierarchických konfiguračných údajov.

Zoberme si teraz ten istý príklad z nášho súboru vlastností a preveďme ho na YAML:

jar: zdroj údajov: heslo: heslo url: jdbc: h2: dev meno používateľa: SA

Môže to byť čitateľnejšie ako alternatíva k súboru vlastností, pretože neobsahuje opakované predpony.

3.2. Štruktúra zoznamu

YAML má výstižnejší formát na vyjadrenie zoznamov:

aplikácia: servery: - ip: cesta „127.0.0.1“: „/ cesta1“ - ip: „cesta 127.0.0.2“: „/ cesta2“ - ip: cesta „127.0.0.3“: „/ cesta3“

3.3. Viac profilov

Bonusom pri používaní YAML je, že môže ukladať viac profilov do jedného súboru. A v YAML, tri čiarky označujú začiatok nového dokumentu. Takže všetky profily môžu byť opísané v rovnakom súbore:

logovací súbor: name: myapplication.log spring: profiles: staging datasource: password: '' url: jdbc: h2: staging username: SA --- spring: profiles: integration datasource: password: 'password' url: jdbc: mysql: // localhost: 3306 / db_integration username: user

V tomto príklade máme dve jar oddiely s rôznymi profilov označený. Spoločnú sadu vlastností môžeme mať aj na koreňovej úrovni - v tomto prípade logovanie.subor.nazov vlastnosť bude rovnaká vo všetkých profiloch.

3.4. Profily viacerých súborov

Ako alternatívu k rôznym profilom v jednom súbore môžeme uložiť viac profilov v rôznych súboroch. A toto je jediný spôsob, ktorý je k dispozícii pri použití vlastnosti súbory.

Dosiahneme to vložením názvu profilu do názvu súboru - napríklad application-dev.yml alebo application-dev.properties.

4. Použitie jarných topánok

Teraz, keď sme definovali naše konfigurácie, pozrime sa, ako k nim získať prístup.

4.1. Hodnota Anotácia

Hodnoty našich vlastností môžeme vložiť pomocou @Hodnota anotácia:

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

Tu, nehnuteľnosť kľúč.something sa vstrekuje pomocou injekcie poľa do jedného z našich objektov.

4.2. Životné prostredie Abstrakcia

Hodnotu nehnuteľnosti môžeme získať aj pomocou Životné prostredie API:

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

4.3. ConfigurationProperties Anotácia

Nakoniec môžeme použiť aj @ConfigurationProperties anotácia na naviazanie našich vlastností na typovo bezpečné štruktúrované objekty:

@ConfigurationProperties (prefix = "mail") verejná trieda ConfigProperties {názov reťazca; Popis reťazca; ...

5. Záver

V tomto článku sme videli niektoré rozdiely medzi nimi vlastnosti a yml Konfiguračné súbory Spring Boot. Tiež sme videli, ako by sa ich hodnoty mohli vzťahovať na iné vlastnosti. Nakoniec sme sa pozreli na to, ako vložiť hodnoty do nášho modulu runtime.

Všetky príklady kódov sú ako vždy k dispozícii na GitHub.


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