See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 25865|Vastuse: 0

[Allikas] Spring Boot loeb (application.yml) konfiguratsioonifaili väärtust

[Kopeeri link]
Postitatud 07.01.2019 15:37:14 | | | |
Esimene application.yml konfiguratsiooniprofiil on järgmine:



Maveni projekt pom.xml lisapakette:




Loo uus kaardistatud objekt järgmise koodiga:

Stringitüüp peab vajama seadistajat, et saada omadusväärtusi; Kaardid, kogud ja massiivid ei ole vajalikud

Kasuta @Autowired annotatsioone automaatseks süstimiseks, nagu näidatud järgmisel pildil:



esConfig väljastab alati nulli, otsisin lahendust kaua, aga ebaõnnestusin, lahendus on allpool.

Loome uue kontrolleri, kood on järgmine:

Süstimine õnnestub ning yml konfiguratsioonifaili väärtused saadakse tavapäraselt järgmiselt:



Põhjused, miks EsClienti ei saa edukalt süstida, on järgmised:

Kutsume selle klassi funktsiooni konstruktoris ja selle klassi @Autowired muutujat kasutatakse selles funktsioonis.

Nii et arvasin, et see võib valesti minna. Sest @Autowired peab ootama, kuni klass on konstrueeritud, enne kui seda saab väliste viidete põhjal seadistada. Seetõttu peab @Autowired süstimisaeg olema hilisem kui konstruktori täitmisaeg.
Lahus:

Spring Team soovitab: "Kasuta alati oma ubades konstruktoripõhist sõltuvussüstit. Kasuta alati väiteid kohustuslike sõltuvuste puhul."

Tõlge:

Spring soovitab: "Alati looge sõltuvussüstimine oma ubade konstruktoritega. kasuta alati väiteid, et sundida sõltuvusi".


Originaaltekst:

Muudetud kirjutis:



PS: Java muutujate initsialiseerimise järjekord on: staatilised muutujad või staatilised avaldusplokid – > instantsimuutujad või initsialiseerimise lauseplokid – >ehitusmeetod – >@Autowired

Miks siis lisada lõplik tüüp liikmemuutujale?

Internetis on selgitus järgmine: Vaikimisi oa ulatus vedrukonfiguratsioonis on singleton, mis on alati olemas pärast käivitamist. Kuuluta ubade objekt dünaamiliselt lootuks, seades scope'i omaduse prototüübiks. Kui aga teenus ise on üksik, tehakse süstimist vaid üks kord.

@Autowired ise on singleton-režiim, käivitatakse see programmi käivitamisel ainult korra ning see ei initsialiseeri teist korda, isegi kui see ei määra lõplikku režiimi, seega on see lõpp mõttetu.

See võib olla selleks, et takistada konstruktori uuesti käivitamist programmi töötamise ajal;

Või ehk on seda lihtsam mõista, pluss lõplik initsialiseerimine algab ainult korra, kui programm algab.






Eelmine:Spring Boot+maven, et projekte kiiresti üles ehitada
Järgmine:2018. aasta Hiina interneti mälestusesemete avaldamine
Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com