Ominaisuuksia Spring ja Spring Boot

Ominaisuuksia Spring ja Spring Boot

Yleistä

Tämä opetusohjelma näyttää, miten asentaa ja käyttää ominaisuuksia Keväällä, kautta Java-kokoonpano ja @PropertySource.

nähdään myös, miten kiinteistöt toimivat Kevätkengissä.

lisätietoa:

Kevät Expression Language-Opas

Tämä artikkeli tutkii Keväällä Expression Language (SpEL), voimakas ilme kieli, joka tukee istä ja manipuloida objektin kuvaajat suorituksen.,
Lue lisää →

Määritä Kevät Boot Web-Sovellus

Jotkut enemmän hyödyllisiä configs Keväällä Käynnistää sovelluksen.
Lue lisää →

Opas @ConfigurationProperties Keväällä Käynnistyksen

nopea ja käytännöllinen opas @ConfigurationProperties kommentointi Keväällä Käynnistyksen.
Lue lisää →

Rekisteröi Tiedoston Ominaisuuksia kautta Huomautuksia

Kevään 3.1 esittelee myös uuden @PropertySource kommentointi kätevä mekanismi lisäämällä kiinteistön lähteistä ympäristöön.,

Voimme käyttää tätä kommentointi yhdessä @Configuration-merkintä:

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

Toinen erittäin hyödyllinen tapa rekisteröidä uusi properties-tiedosto on käyttää paikkamerkki, jonka avulla voimme dynaamisesti valitse oikea tiedosto runtime:

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

2.1. Useiden kiinteistöjen sijaintien määrittely

@PropertySource-huomautus on toistettavissa Java 8-yleissopimusten mukaisesti., Siksi, jos käytät Java 8 tai uudempi, voimme käyttää tätä huomautusta määrittää useita kiinteistön sijainti:

tietenkin, voimme myös käyttää @PropertySources kommentointi ja määritä joukko @PropertySource. Tämä toimii missä tahansa tuettu Java-versio, ei vain Java 8 tai uudempi:

joka tapauksessa, se on syytä huomata, että jos kiinteistön nimi törmäys, viimeinen lähde lue etusijalla.,

Käyttämällä/Suonensisäisten Ominaisuuksia

Suonensisäisten kiinteistön @Arvo kommentointi on yksinkertainen:

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

Voimme myös määrittää oletusarvo omaisuus:

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

uusi PropertySourcesPlaceholderConfigurer lisätty Keväällä 3.1 ratkaista ${…} paikkamerkeillä sisällä bean määritelmä kiinteistöjen arvot ja @ – Arvo merkintöjä.,

Lopuksi, voimme saada kiinteistön arvoa käyttäen Ympäristön API:

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

Ominaisuudet Kevään Boot

Ennen kuin voimme mennä, enemmän advanced configuration vaihtoehdot ominaisuuksia, katsotaanpa viettää aikaa katsomalla uusia ominaisuuksia-tuki Keväällä Käynnistyksen.

Yleisesti ottaen, tämä uusi tuki liittyy vähemmän kokoonpano verrattuna standardi Kevät, joka on tietenkin yksi tärkeimmistä tavoitteista Käynnistyksen.

4.1. sovellus.,ominaisuudet: Oletusominaisuustiedosto

Boot soveltaa tyypillistä convention over configuration-lähestymistapaansa kiinteistötiedostoihin. Tämä tarkoittaa, että voimme yksinkertaisesti laittaa hakemuksen.ominaisuudet tiedosto meidän src / main / resources hakemisto, ja se on automaattinen havaittu. Voimme sitten pistää kaikki ladatut ominaisuudet siitä normaalisti.

Niin, käyttämällä tätä oletuksena tiedosto, meidän ei tarvitse erikseen rekisteröidä PropertySource tai jopa tarjoavat polku omaisuus-tiedoston avaamiseen.,

Voimme myös määrittää eri tiedoston suorituksen, jos meidän täytyy, käyttämällä ympäristö-ja tekijänoikeudet:

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

Kevään Boot 2.3, voimme myös määrittää jokeri paikkoja kokoonpano-tiedostoja.

esimerkiksi kevään voi asettaa.määritys.kiinteistön sijainti config/*/:

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

Tämä tapa, Kevät Käynnistää tulee etsiä asetustiedostoja matching config/*/ hakemisto kuvio ulkopuolella meidän jar-tiedosto. Tämä on kätevää, kun meillä on useita määritysominaisuuksia.

versiosta 2.4 lähtien.,0, Spring Boot tukee käyttämällä multi-document properties-tiedostot, samoin kuin YAML ei suunnittelu:

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

Huomaa, että ominaisuudet-tiedostot, kolme viivaa merkintä edeltää kommentti merkki (#).

4.2. Ympäristökohtaiset ominaisuudet tiedosto

jos joudumme kohdentamaan erilaisia ympäristöjä, siihen on sisäänrakennettu mekanismi bootissa.

voimme yksinkertaisesti määritellä sovellusympäristön.ominaisuudet-tiedosto src / main / resources-hakemistossa, ja aseta sitten Spring-profiili, jossa on sama ympäristönimi.,

esimerkiksi, jos määrittelemme ”lavastus” ympäristö, se tarkoittaa, että meidän täytyy määritellä lavastus profiili ja sitten sovellus-lavastus.Kiinteistö.

tämä env-tiedosto ladataan ja asetetaan oletustiedostojen edelle. Huomaa, että oletuksena tiedosto ei olla vielä ladattu, se on vain, että kun on omaisuutta törmäys -, ympäristö-erityisiä omaisuuden tiedosto on etusijalla.

4.3. Testi-Erityisiä Ominaisuuksia-Tiedosto

– Meillä on ehkä myös vaatimus käyttää eri kiinteistöjen arvot, kun meidän sovellus on testattavana.,

Spring Boot käsittelee tämän meille etsimällä src/test / resources-hakemistostamme koeajon aikana. Jälleen Oletusominaisuudet ovat edelleen injektoitavissa normaalisti, mutta ne ohittavat ne, jos on törmäys.

4.4. Myös @TestPropertySource Kommentointi

Jos tarvitsemme enemmän rakeinen hallita testin ominaisuudet, sitten voimme käyttää @TestPropertySource kommentointi.,

Tämä antaa meille mahdollisuuden asettaa testin ominaisuudet tietyn testin yhteydessä, kun edelle default kiinteistön lähteet:

Jos emme halua käyttää-tiedoston, emme voi määrittää nimet ja arvot suoraan:

Voimme myös saavuttaa samanlainen vaikutus käyttämällä ominaisuuksia argumentti @SpringBootTest merkintä:

4.5. Hierarkkinen Ominaisuudet

Jos meillä on ominaisuuksia, jotka on ryhmitelty yhteen, voimme käyttää @ConfigurationProperties merkintä, joka kartoittaa kiinteistön nämä hierarkiat osaksi Java-objektit, kaavioita.,

katsotaanpa joitakin ominaisuuksia, joiden avulla voit määrittää tietokanta-yhteys:

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

Ja sitten katsotaanpa käyttää huomautusta kartta ne tietokannan objekti:

Kevät Boot koskee se: n yleissopimuksen yli kokoonpano lähestymistapa taas, automaattisesti kartoitus kiinteistöjen nimet ja niitä vastaavat kentät. Meidän tarvitsee vain toimittaa kiinteistö-etuliite.

Jos haluat syventyä konfiguraatio-ominaisuuksiin, tutustu syvälliseen artikkeliimme.

4.6. Vaihtoehto: YAML-Tiedostot

Kevät tukee myös YAML-tiedostoja.,

kaikki samat nimeämissäännöt koskevat testikohtaisia, ympäristökohtaisia ja oletusominaisuustiedostoja. Ainoa ero on tiedostotunniste ja riippuvuus SnakeYAML-kirjastosta on meidän classpath.,

YAML on erityisen hyvä hierarkkinen omaisuuden varastointi; seuraava ominaisuus-tiedosto:

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

on synonyymi seuraavat YAML-tiedosto:

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

Se on myös syytä mainita, että YAML-tiedostot eivät tue @PropertySource kommentointi, joten jos meidän täytyy käyttää tämä kommentointi, se rajoittaa meitä käyttämään properties-tiedosto.

Toinen merkittävä seikka on se, että versio 2.4.0 Kevät Boot muuttanut ominaisuudet ovat ladattu alkaen multi-document YAML-tiedostoja., Aiemmin tilaus, johon ne lisättiin, perustui Profiilin aktivointijärjestykseen. Uusi versio, kuitenkin, kehys noudattaa samaa tilaaminen sääntöjä, jotka mainitsimme aiemmin .ominaisuudet tiedostot; ominaisuudet ilmoitettu alempi tiedosto yksinkertaisesti ohittaa ne korkeampi ylös.

Lisäksi, tämä versio profiileja ei voi enää aktivoida profiili,-erityisiä asiakirjoja, jolloin tulos selkeämmät ja paremmin ennakoitavissa.

4, 7. Tuodaan muita asetustiedostoja

ennen versiota 2.4.,0, Spring Boot sallittu, mukaan lukien muut asetustiedostot käyttäen keväällä.määritys.sijainti ja kevät.määritys.lisäpaikkaominaisuudet, mutta niillä oli tiettyjä rajoituksia. Ne oli esimerkiksi määriteltävä ennen sovelluksen aloittamista (ympäristön tai järjestelmän ominaisuuksina tai komentorivin argumentteina), koska niitä käytettiin prosessin alkuvaiheessa.

mainitussa versiossa voidaan käyttää jousta.määritys.tuo kiinteistö hakemuksen sisällä.Ominaisuudet tai sovellus.yml-tiedosto sisältää helposti lisätiedostoja., Tämä ominaisuus tukee joitakin mielenkiintoisia ominaisuuksia:

  • lisätä useita tiedostoja tai hakemistoja
  • tiedostot voidaan ladata joko classpath tai ulkoisesta hakemistosta
  • ilmaisee, jos käynnistyksen epäonnistuu, jos tiedostoa ei löydy, tai jos se on valinnainen tiedosto
  • tuominen extensionless tiedostoja

katsotaanpa voimassa oleva esimerkki:

Huomautus: tässä me alustettu tätä ominaisuutta käyttämällä rivinvaihtoja vain selvyyden vuoksi.

kevät käsittelee tuontia uutena asiakirjana, joka on lisätty välittömästi tuonti-ilmoituksen alle.

4.8., Ominaisuudet komentoriviltä Argumentteja

Lisäksi käyttää tiedostoja, voimme välittää ominaisuuksia suoraan komentorivillä:

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

Voimme myös tehdä tämän kautta järjestelmän ominaisuudet, jotka ovat saatavilla ennen -jar-komennon sijaan sen jälkeen:

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

4.9. Ominaisuudet ympäristömuuttujat

Kevät Boot on myös havaita, ympäristömuuttujat, että heitä kohdeltaisiin ominaisuudet:

export name=valuejava -jar app.jar

4.10., Satunnaistaminen Omaisuuden Arvot

Jos emme halua deterministisen kiinteistöjen arvot, voimme käyttää RandomValuePropertySource satunnaista arvot ominaisuudet:

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

4.11. Lisää Omaisuutta Lähteistä

Kevät Boot tukee lukuisia kiinteistön lähteistä, toteuttamalla hyvin mietitty tilaus, jotta järkevä syrjäytetä. Kannattaa tutustua virallisiin asiakirjoihin, jotka menevät tämän artikkelin soveltamisalaa pidemmälle.,

Määritys Käyttämällä Raaka Pavut — PropertySourcesPlaceholderConfigurer

Lisäksi kätevä menetelmiä päästä ominaisuudet kevääksi, voimme myös määritellä ja regiter kiinteistön kokoonpano bean manuaalisesti.

Työskentely PropertySourcesPlaceholderConfigurer antaa meille täyden määräysvallan asetuksia, joiden huonona puolena on yksityiskohtaisempi ja useimmiten tarpeetonta.,

katsotaanpa, miten voimme määritellä tämän bean Java kokoonpano:

Ominaisuudet in Vanhempi-Lapsi-Yhteyksissä

Tämä kysymys tulee esiin uudestaan ja uudestaan: Mitä tapahtuu, kun web-sovellus on vanhemman ja lapsen yhteydessä? Vanhemmalla asiayhteydellä voi olla jokin yhteinen ydintoiminto ja pavut, ja sitten yksi (tai useampi) lapsen asiayhteys, joka voi sisältää servlet-spesifisiä papuja.

mikä on tässä tapauksessa paras tapa määritellä ominaisuudet-tiedostot ja sisällyttää ne näihin yhteyksiin? Ja miten parhaiten hakea nämä ominaisuudet keväältä?

annamme yksinkertaisen jaottelun.,

Jos tiedosto on määritelty Vanhemman yhteydessä:

  • @ – Arvo toimii Lapsen yhteydessä: KYLLÄ
  • @ – Arvo toimii Vanhempi yhteydessä: KYLLÄ
  • ympäristö.getProperty In Child context: YES
  • environment.getProperty Vanhempi yhteydessä: KYLLÄ

Jos tiedosto on määritelty Lapsen yhteydessä:

  • @ – Arvo toimii Lapsen yhteydessä: KYLLÄ
  • @ – Arvo toimii Vanhempi yhteydessä: EI
  • ympäristö.getProperty In Child context: YES
  • environment.,getProperty Vanhempi yhteydessä: EI

Johtopäätös

Tämä artikkeli osoitti useita esimerkkejä työskentely ominaisuuksia ja ominaisuuksia tiedostoja Keväällä.

Kuten aina, koko koodi tausta artikkeli on saatavilla GitHub.

aloita Kevät 5, ja Kevät Boot 2 kautta Oppia Kevään aikana:

>> KURSSI

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *