tulajdonságok Spring and Spring Boot

tulajdonságok Spring and Spring Boot

áttekintés

Ez a bemutató megmutatja, hogyan kell beállítani és használni tulajdonságok tavasszal keresztül Java configuration and @PropertySource.

azt is látni fogjuk, hogyan működnek a tulajdonságok a tavaszi indításkor.

További olvasmány:

tavaszi kifejezés nyelvi útmutató

ez a cikk a Spring Expression Language (spel) – t, egy erőteljes kifejezésnyelvet vizsgálja, amely támogatja az objektumgráfok lekérdezését és manipulálását futásidőben.,
tovább →

konfiguráljon egy tavaszi rendszerindító webes alkalmazást

néhány hasznos konfigurációt egy tavaszi rendszerindító alkalmazáshoz.
tovább →

útmutató a @ConfigurationProperties in Spring Boot

egy gyors és praktikus útmutató a @ ConfigurationProperties annotation in Spring Boot.
tovább →

regisztráljon egy Tulajdonságfájlt megjegyzéseken keresztül

a tavaszi 3.1 bemutatja az új @PropertySource megjegyzést, mint kényelmes mechanizmust az ingatlanforrások környezetbe történő hozzáadásához.,

ezt a megjegyzést a @konfigurációs megjegyzéssel együtt használhatjuk:

@Configuration@PropertySource("classpath:foo.properties")public class PropertiesWithJavaConfig { //...}

egy új tulajdonságfájl regisztrálásának másik nagyon hasznos módja egy helyőrző használata, amely lehetővé teszi számunkra, hogy dinamikusan válasszuk ki a megfelelő fájlt futásidőben:

@PropertySource({ "classpath:persistence-${envTarget:mysql}.properties"})...

2.1. Több Tulajdonsághely meghatározása

a @ PropertySource megjegyzés a Java 8 konvenciók szerint ismételhető., Ezért, ha Java 8 vagy újabb verziót használunk, akkor ezt a megjegyzést több tulajdonsághely meghatározására is használhatjuk:

természetesen a @PropertySources annotációt is használhatjuk, valamint megadhatjuk a @PropertySource tömbjét. Ez minden támogatott Java verzióban működik, nem csak a Java 8 vagy újabb verzióban:

mindkét esetben érdemes megjegyezni, hogy tulajdonságnév ütközés esetén az utolsó forrásolvasás elsőbbséget élvez.,

A/Intravénás Tulajdonságok

az Intravénás egy ingatlan, a @Érték jegyzet egyszerű:

@Value( "${jdbc.url}" )private String jdbcUrl;

Mi is megadhat egy alapértelmezett értéket az ingatlan:

@Value( "${jdbc.url:aDefaultUrl}" )private String jdbcUrl;

Az új PropertySourcesPlaceholderConfigurer ki a Tavaszi 3.1 megoldani ${…} helykitöltőt bean meghatározása az ingatlan értékét, valamint @Érték kommentárok.,

Végre, megkapjuk az ingatlan értékének használatával a Környezetet API:

@Autowiredprivate Environment env;...dataSource.setUrl(env.getProperty("jdbc.url"));

a Tulajdonságok A Tavaszi Boot

Mielőtt bemegyünk több speciális konfigurációs beállításokat a tulajdonságok, hadd töltsön el egy kis időt az új tulajdonságok támogatás a Tavaszi Csizma.

Általánosságban elmondható, hogy ez az új támogatás kevesebb konfigurációt foglal magában a standard rugóhoz képest, ami természetesen a Boot egyik fő célja.

4.1. alkalmazás.,tulajdonságok: Az alapértelmezett tulajdonságfájl

a rendszerindítás a tulajdonságfájlok konfigurációs megközelítésével kapcsolatos tipikus konvenciót alkalmazza. Ez azt jelenti, hogy egyszerűen alkalmazhatunk egy alkalmazást.tulajdonságok fájl az src / main / resources könyvtárban, majd automatikusan felismeri. Ezután minden betöltött tulajdonságot a szokásos módon injektálhatunk belőle.

tehát az alapértelmezett fájl használatával nem kell kifejezetten regisztrálnunk egy PropertySource-t, vagy akár meg is adnunk egy tulajdonságfájl elérési útját.,

futásidőben is konfigurálhatunk egy másik fájlt, ha szükséges, egy környezeti tulajdonság használatával:

java -jar app.jar --spring.config.location=classpath:/another-location.properties

a tavaszi Boot 2.3-tól a konfigurációs fájlok helyettesítő helyét is megadhatjuk.

például beállíthatjuk a rugót.config.hely tulajdonság config/*/:

java -jar app.jar --spring.config.location=config/*/

ily módon a Spring Boot olyan konfigurációs fájlokat keres, amelyek megfelelnek a konfigurációs/*/ könyvtármintának a jar fájlunkon kívül. Ez akkor hasznos,ha több konfigurációs forrásunk van.

a 2.4-es verzió óta.,0, A Spring Boot támogatja a multi-document properties fájlok használatát, hasonlóan a YAML-hez a tervezés szerint:

baeldung.customProperty=defaultValue#---baeldung.customProperty=overriddenValue

vegye figyelembe, hogy a tulajdonságfájlok esetében a három kötőjel jelölését egy megjegyzés karakter (#) előzi meg.

4.2. Környezet-specifikus tulajdonságok Fájl

ha különböző környezeteket kell megcéloznunk, van egy beépített mechanizmus a rendszerindításhoz.

egyszerűen definiálhatunk egy alkalmazáskörnyezetet.tulajdonságok fájl az src / main / resources könyvtárban, majd állítson be egy tavaszi profilt ugyanazzal a környezeti névvel.,

például, ha definiálunk egy “staging” környezetet, ez azt jelenti, hogy meg kell határoznunk egy staging profilt, majd az alkalmazás-stagingot.tulajdonságok.

Ez az env fájl betöltődik, és elsőbbséget élvez az alapértelmezett tulajdonságfájllal szemben. Ne feledje, hogy az alapértelmezett fájl továbbra is betöltődik, csak akkor, ha tulajdonság ütközés történik, a környezetspecifikus tulajdonságfájl elsőbbséget élvez.

4.3. Teszt-specifikus tulajdonságok Fájl

lehet, hogy követelményünk van a különböző tulajdonságértékek használatára is, amikor alkalmazásunk teszt alatt van.,

Spring Boot kezeli ezt számunkra keresve a src / test / resources könyvtárban egy teszt futtatása során. Ismét alapértelmezett tulajdonságok továbbra is injektálható, mint a normál, de felülírja ezeket, ha van egy ütközés.

4.4. A @TestPropertySource Megjegyzés

Ha több szemcsés ellenőrzésre van szükségünk a teszt tulajdonságai felett, akkor használhatjuk a @TestPropertySource megjegyzést.,

Ez lehetővé teszi, hogy meghatározott vizsgálati tulajdonságok egy adott vizsgálati összefüggésben figyelembe vételével az alapértelmezett tulajdonság források:

Ha nem akarjuk használni egy fájlt, akkor megadhatja nevét, valamint az értékek közvetlenül:

Mi is elérni hasonló hatást használata a tulajdonságok érv a @SpringBootTest jegyzet:

4.5. Hierarchikus Tulajdonságok

Ha a tulajdonságok, amelyek csoportosítva tudjuk használni a @ConfigurationProperties jegyzet, amely térkép ezeket a szállás hierarchiák a Java objektumok grafikonok.,

vessünk néhány tulajdonság segítségével beállíthatja, hogy egy adatbázis-kapcsolat:

database.url=jdbc:postgresql:/localhost:5432/instancedatabase.username=foodatabase.password=bar

majd használjuk a magyarázat, hogy az a térkép, hogy egy adatbázis-objektum:

a Tavasz Indító vonatkozik az egyezmény át konfigurációs megközelítés újra, automatikusan feltérképezése között tulajdon nevek a megfelelő mezőket. Minden, amit meg kell adnia az ingatlan előtag.

ha mélyebben szeretne ásni a konfigurációs tulajdonságokba, nézze meg mélyreható cikkünket.

4.6. Alternatív megoldás: a YAML Files

Spring támogatja a YAML fájlokat is.,

ugyanazok az elnevezési szabályok vonatkoznak a tesztspecifikus, környezetspecifikus és alapértelmezett tulajdonságfájlokra. Az egyetlen különbség az, hogy a fájlkiterjesztés függ attól, hogy a SnakeYAML könyvtár a classpath-on van-e.,

YAML különösen jó a hierarchikus ingatlan tároló; a következő ingatlan fájlt:

database.url=jdbc:postgresql:/localhost:5432/instancedatabase.username=foodatabase.password=barsecret: foo

szinonimája a következő YAML fájlt:

database: url: jdbc:postgresql:/localhost:5432/instance username: foo password: barsecret: foo

Azt is érdemes megemlíteni, hogy YAML fájlokat nem támogatja a @PropertySource jegyzet, úgyhogy ha ki kell használni ezt a jegyzet, ez kényszerít minket, hogy segítségével a tulajdonságokat a fájl.

egy másik figyelemre méltó pont az, hogy a 2.4.0 verzióban a Spring Boot megváltoztatta a tulajdonságok betöltésének módját a multi-document YAML fájlokból., Korábban a Hozzáadás sorrendje a profil aktiválási sorrendjén alapult. Az új verzióval azonban a keretrendszer ugyanazokat a rendelési szabályokat követi, amelyeket korábban jeleztünk .tulajdonságok fájlok; tulajdonságok alacsonyabb a fájlban egyszerűen felülírja azokat magasabb.

továbbá, ebben a verzióban a profilokat már nem lehet aktiválni a profilspecifikus dokumentumokból, így az eredmény egyértelműbbé és kiszámíthatóbbá válik.

4.7. További konfigurációs fájlok importálása

a 2.4-es verzió előtt.,0, a tavaszi indítás lehetővé tette további konfigurációs fájlok beillesztését a rugó használatával.config.helyszín és tavasz.config.további-hely tulajdonságok, de voltak bizonyos korlátozások. Például az alkalmazás megkezdése előtt meg kellett határozni őket (környezet vagy Rendszer tulajdonságai, vagy parancssori argumentumok használata), mivel azokat a folyamat elején használták.

az említett változatban a rugót használhatjuk.config.import tulajdonság az alkalmazáson belül.Tulajdonságok vagy alkalmazás.yml fájl könnyen tartalmazhat további fájlokat., Ez a szálláshely támogatja néhány érdekes tulajdonságok:

  • hozzátéve, több fájlok vagy könyvtárak
  • a fájlok tölthető, akár a classpath, vagy külső könyvtár
  • jelzi, ha az indítási folyamat meghiúsul, ha egy fájl nem található, vagy ha az opcionális fájl
  • importáló extensionless fájlok

nézzük meg egy érvényes példa:

Megjegyzés: itt formázott ez a tulajdonság segítségével sortörések csak az egyértelműség kedvéért.

tavasz a behozatalt az importnyilatkozat alá közvetlenül beillesztett új dokumentumként kezeli.

4, 8., Tulajdonságok parancssori Argumentumok

Mellesleg használata fájlok, akkor át tulajdonságok közvetlenül parancssorból:

java -jar app.jar --property="value"

Mi is ez a via rendszer tulajdonságok, amelyek a biztosított, mielőtt a -jar parancs helyett után:

java -Dproperty.name="value" -jar app.jar

4.9. A környezeti változók tulajdonságai

a tavaszi indítás a környezeti változókat is észleli, tulajdonságokként kezelve őket:

export name=valuejava -jar app.jar

4.10., A

tulajdonságértékek randomizációja ha nem akarunk determinista tulajdonságértékeket, akkor a RandomValuePropertySource-t használhatjuk a tulajdonságok értékeinek randomizálására:

random.number=${random.int}random.long=${random.long}random.uuid=${random.uuid}

4.11. További típusú tulajdonság források

tavaszi Boot támogatja számos ingatlan források, végrehajtási egy jól átgondolt rendelés, hogy ésszerű felülbíráló. Érdemes konzultálni a hivatalos dokumentációval, amely túlmutat a cikk hatókörén.,

configuration using Raw Beans – The PropertySourcesPlaceholderConfigurer

a Tulajdonságok tavaszba való bejutásának kényelmes módszerei mellett manuálisan is meghatározhatjuk és regiterálhatjuk a tulajdonságkonfigurációs babot.

a PropertySourcesPlaceholderConfigurer-rel való együttműködés teljes ellenőrzést biztosít a konfiguráció felett, azzal a hátrányával, hogy verbózabb, az idő nagy részében felesleges.,

lássuk, hogyan definiálhatjuk ezt a babot Java konfigurációval:

tulajdonságok szülő-gyermek kontextusban

Ez a kérdés újra és újra felmerül: mi történik, ha webalkalmazásunkban van szülő és gyermek kontextus? A szülő kontextusban lehet néhány közös alapfunkció és bab, majd egy (vagy több) gyermek kontextusban, talán tartalmazó servlet-specifikus bab.

ebben az esetben mi a legjobb módja annak, hogy meghatározzuk a tulajdonságfájlokat, és bevonjuk őket ezekben a kontextusokban? Hogyan lehet ezeket a tulajdonságokat legjobban tavasszal letölteni?

egyszerű bontást adunk.,

Ha a fájl a szülő kontextusában van definiálva:

  • @Value a gyermek kontextusában működik: igen
  • @ Value a szülő kontextusában működik: igen
  • környezet.getProperty a gyermek kontextusában: igen
  • környezet.getProperty szülő kontextusban: igen

Ha a fájl a gyermek kontextusában van meghatározva:

  • @Value működik a gyermek kontextusában: igen
  • @Value működik a szülői kontextusban: nem
  • környezet.getProperty a gyermek kontextusában: igen
  • környezet.,Getproperty in Parent context: NO

következtetés

Ez a cikk több példát mutatott a tulajdonságok és tulajdonságok fájlok tavaszi kezelésére.

mint mindig, a cikket támogató teljes kód elérhető a GitHub-on.

Kezdje a tavaszi 5-ös és a tavaszi Boot 2-vel A Learn Spring tanfolyamon keresztül:

> >

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük