Datoteka Spring Properties izvana

1. Pregled

Datoteke svojstava uobičajena su metoda koju možemo koristiti za pohranu podataka specifičnih za projekt. Idealno bi bilo da ga držimo izvan pakiranja kako bismo mogli mijenjati konfiguraciju prema potrebi i kada je to potrebno.

U ovom ćemo brzom vodiču pogledati razne načini učitavanja datoteke svojstava s mjesta izvan staklenke u aplikaciji Spring Boot.

2. Korištenje zadanog mjesta

Prema dogovoru, Spring Boot traži eksternaliziranu konfiguracijsku datoteku - primjena. Svojstva ili primjena.iml - na 4 unaprijed određena mjesta u sljedećem redoslijedu prioriteta:

  • A / config poddirektorij trenutnog direktorija
  • Trenutni direktorij
  • Put u nastavi / config paket
  • Korijen staze

Stoga, svojstvo definirano u primjena.svojstva i smješten u / config bit će učitan poddirektorij trenutnog direktorija. Ovo će također poništiti svojstva na drugim mjestima u slučaju sudara.

3. Korištenje naredbenog retka

Ako nam gore navedena konvencija ne uspije, možemo i mi konfigurirajte mjesto izravno u naredbenom retku:

java -jar app.jar --spring.config.location = datoteka: ///Users/home/config/jdbc.properties

Također možemo proslijediti mjesto mape na kojem će aplikacija tražiti datoteku:

java -jar app.jar --spring.config.name = application, jdbc --spring.config.location = datoteka: /// Users / home / config

A, alternativni pristup je pokretanje aplikacije Spring Boot kroz dodatak Maven. Tamo možemo koristiti -D parametar:

mvn spring-boot: run -Dspring.config.location = "datoteka: ///Users/home/jdbc.properties"

4. Korištenje varijabli okoline

Ili recimo da ne možemo promijeniti naredbu za pokretanje. Ono što je sjajno je Spring Boot također će čitati varijable okoline SPRING_CONFIG_NAME i SPRING_CONFIG_LOCATION:

izvoz SPRING_CONFIG_NAME = aplikacija, jdbc izvoz SPRING_CONFIG_LOCATION = datoteka: /// Users / home / config java -jar app.jar

Imajte na umu da će se zadana datoteka i dalje učitavati. Ali u slučaju sudara imovine, datoteka svojstava specifična za okruženje ima prednost.

5. Programski

Ili, ako želimo programski pristup, možemo registrirati a PropertySourcesPlaceholderConfigurer grah:

public PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer () {PropertySourcesPlaceholderConfigurer svojstva = new PropertySourcesPlaceholderConfigurer (); svojstva.setLocation (novi FileSystemResource ("/ Users / home / conf.properties")); svojstva.setIgnoreResourceNotFound (false); povrat svojstava; }

Evo, koristili smo PropertySourcesPlaceholderConfigurer za učitavanje svojstava s prilagođenog mjesta.

6. Izuzimanje datoteke iz masne tegle

Dodatak Maven Boot automatski će uključiti sve datoteke u src / glavni / resursi direktorij u paket jar.

Ako ne želimo da datoteka bude dio jar-a, tada možemo izuzeti jednostavnu konfiguraciju:

   src / main / resources true ** / conf.properties 

U ovom smo primjeru filtrirali konf.svojstva datoteka od uključenja u rezultirajuću staklenku.

7. Zaključak

Kao što vidimo, Spring Boot sam okvir za nas brine o eksternaliziranoj konfiguraciji.

Često samo moramo smjestiti vrijednosti svojstava u ispravne datoteke i lokacije, ali također možemo koristiti Springov Java API za veću kontrolu.

Kao i uvijek, puni izvorni kod primjera dostupan je na GitHub-u.