Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 25865|Vastaus: 0

[Lähde] Spring Boot lukee (application.yml) konfiguraatiotiedoston arvon

[Kopioi linkki]
Julkaistu 7.1.2019 15.37.14 | | | |
Ensimmäinen application.yml konfiguraatioprofiili on seuraava:



Maven-projekti pom.xml lisää paketteja:




Luo uusi kartoitettu objekti seuraavalla koodilla:

Merkkijonotyypin täytyy tarvita asettaja saadakseen ominaisuusarvot; Karttoja, kokoelmia ja taulukoita ei tarvita

Käytä @Autowired annotaatioita automaattisesti injektioidaksesi seuraavassa kuvassa:



esConfig antaa aina null-tuloksen, olen etsinyt ratkaisua pitkään, mutta epäonnistunut, ratkaisu löytyy alta.

Luodaan uusi ohjain, koodi on seuraava:

Injektio onnistuu, ja yml-konfiguraatiotiedoston arvot saadaan normaalisti seuraavasti:



Syyt siihen, miksi EsClientia ei voida injektoida onnistuneesti, ovat seuraavat:

Kutsu tämän luokan funktio konstruktoriin, ja tämän luokan @Autowired muuttuja käytetään tässä funktiossa.

Joten ajattelin, että se voisi mennä pieleen. Koska @Autowired täytyy odottaa, että luokka rakennetaan, ennen kuin se voidaan asettaa ulkoisista lähteistä. Tästä syystä @Autowired:n injektioaika on oltava myöhempi kuin konstruktorin suoritusaika.
Ratkaisu:

Spring Team suosittelee: "Käytä aina valmistajapohjaista riippuvuusinjektiota pavuissasi. Käytä aina väitteitä pakollisille riippuvuuksille".

Käännös:

Spring suosittelee: "Tee aina riippuvuuden injektiointi pavussasi valmistelijoilla. käytä aina väitteitä riippuvuuksien pakottamiseen".


Alkuperäinen kirjoitus:

Muokattu kirjoitus:



PS: Java-muuttujien alustusjärjestys on: staattiset muuttujat tai staattiset lauseblokit – > instanssimuuttujat tai aloituslauselohkot – >rakennusmenetelmä – >@Autowired

Miksi siis lisätä lopullinen tyyppi jäsenmuuttujaan?

Internetissä on selitys seuraavasti: Oletuspavun laajuus jousikokoonpanossa on singleton, joka on aina läsnä käynnistyksen jälkeen. Ilmoita pavun objekti dynaamisesti luoduksi asettamalla skoopin ominaisuus prototyyppiksi. Jos palvelusi itsessään on singleton, injektio suoritetaan vain kerran.

@Autowired itsessään on singleton-tila, se suoritetaan vain kerran ohjelman käynnistyessä, eikä se käynnisty toista kertaa, vaikka se ei määrittele finaalia, joten tämä finaali on merkityksetön.

Se voi olla estämään konstruktorin uudelleenkäynnistys ohjelman ollessa käynnissä;

Tai ehkä se on helpompi ymmärtää, ja lopullinen käynnistyy vain kerran, kun ohjelma alkaa.






Edellinen:Spring Boot+maven projektien nopeaan rakentamiseen
Seuraava:2018 China Internet Memorabilia julkaistu
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com