Spring Properties File Outside jar
1. Prehľad
Súbory nehnuteľností sú bežnou metódou, ktorú môžeme použiť na ukladanie informácií špecifických pre projekt. V ideálnom prípade by sme ho mali ponechať mimo obalu, aby sme mohli vykonať zmeny v konfigurácii podľa potreby.
V tomto rýchlom výučbe sa pozrieme na rôzne spôsoby načítania súboru vlastností z umiestnenia mimo nádoby v aplikácii Spring Boot.
2. Používanie predvoleného umiestnenia
Podľa konvencie Spring Boot hľadá externalizovaný konfiguračný súbor - žiadosť. vlastnosti alebo aplikácia.yml - na 4 vopred určených miestach v tomto poradí:
- A / konfigur podadresár aktuálneho adresára
- Aktuálny adresár
- Triedna cesta / konfigur balíček
- Koreň triedy
Preto vlastnosť definovaná v application.properties a umiestnené v / konfigur načíta sa podadresár aktuálneho adresára. Toto tiež prepíše vlastnosti na iných miestach v prípade kolízie.
3. Používanie príkazového riadku
Ak vyššie uvedený dohovor nefunguje pre nás, môžeme tiež nakonfigurujte umiestnenie priamo v príkazovom riadku:
java -jar app.jar --spring.config.location = súbor: ///Users/home/config/jdbc.properties
Môžeme tiež odovzdať umiestnenie priečinka, kde aplikácia vyhľadá súbor:
java -jar app.jar --spring.config.name = aplikácia, jdbc --spring.config.location = súbor: /// Users / home / config
Alternatívnym prístupom je spustenie aplikácie Spring Boot prostredníctvom pluginu Maven. Tam môžeme použiť a -D parameter:
mvn spring-boot: run -Dspring.config.location = "súbor: ///Users/home/jdbc.properties"
4. Používanie premenných prostredia
Alebo, povedzme, že nemôžeme zmeniť príkaz na spustenie. Čo je super je Spring Boot bude čítať aj premenné prostredia SPRING_CONFIG_NAME a SPRING_CONFIG_LOCATION:
export SPRING_CONFIG_NAME = aplikácia, jdbc export SPRING_CONFIG_LOCATION = súbor: /// Users / home / config java -jar app.jar
Upozorňujeme, že predvolený súbor sa bude stále načítať. Ale v prípade kolízie majetku súbor vlastností špecifických pre dané prostredie má prednosť.
5. Programovo
Alebo, ak chceme programový prístup, môžeme zaregistrovať a PropertySourcesPlaceholderConfigurer fazuľa:
public PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer () {PropertySourcesPlaceholderConfigurer vlastnosti = nový PropertySourcesPlaceholderConfigurer (); properties.setLocation (nový FileSystemResource ("/ Users / home / conf.properties")); properties.setIgnoreResourceNotFound (false); návratové vlastnosti; }
Tu sme použili PropertySourcesPlaceholderConfigurer načítať vlastnosti z vlastného umiestnenia.
6. Vylúčenie súboru z tučnej nádoby
Doplnok Maven Boot automaticky zahrnie všetky súbory vo formáte src / main / resources adresár balíka jar.
Ak nechceme, aby bol súbor súčasťou jar, môžeme ho jednoduchou konfiguráciou vylúčiť:
src / main / resources true ** / conf.properties
V tomto príklade sme odfiltrovali konf.vlastnosti súbor nebude zahrnutý do výsledného jar.
7. Záver
Ako vidíme, o externú konfiguráciu sa za nás stará samotný rámec Spring Boot.
Často musíme iba umiestniť hodnoty vlastností do správnych súborov a umiestnení, ale pre väčšiu kontrolu môžeme použiť aj Java API od Spring.
Celý zdrojový kód príkladov je ako vždy k dispozícii na serveri GitHub.