Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 25865|Atsakyti: 0

[Šaltinis] "Spring Boot" nuskaito (application.yml) konfigūracijos failo reikšmę

[Kopijuoti nuorodą]
Paskelbta 2019-01-07 15:37:14 | | | |
Pirmasis application.yml konfigūracijos profilis yra toks:



Maven projektas pom.xml pridėti paketus:




Sukurkite naują susietą objektą su šiuo kodu:

Eilutės tipui turi būti reikalingas nustatytojas, kad gautų ypatybių reikšmes; Žemėlapiai, rinkiniai ir masyvai nebūtini

Naudokite @Autowired komentarus, kad automatiškai įterptumėte, kaip parodyta šiame paveikslėlyje:



esConfig visada išveda nulį, ilgą laiką ieškojo sprendimo, bet nepavyko, bus sprendimas žemiau.

Sukurkime naują valdiklį, kodas yra toks:

Injekcija sėkminga, o yml konfigūracijos failo reikšmės gaunamos įprastai, taip:



Priežastys, kodėl EsClient negali būti sėkmingai suleistas, yra šios:

Konstruktoriuje iškvieskite šios klasės funkciją, o šioje funkcijoje naudojamas šios klasės @Autowired kintamasis.

Taigi maniau, kad tai gali nutikti ne taip. Nes @Autowired reikia palaukti, kol klasė bus sukonstruota, kad ją būtų galima nustatyti iš išorinių nuorodų. Todėl @Autowired įpurškimo laikas turi būti vėlesnis nei konstruktoriaus vykdymo laikas.
Sprendimas:

"Spring Team" rekomenduoja: "Visada naudokite konstruktorių pagrįstą priklausomybės injekciją pupelėse. Visada naudokite privalomų priklausomybių teiginius".

Vertimas:

Pavasaris siūlo: "Visada nustatykite priklausomybės injekciją su konstruktoriais savo pupelėse. visada naudokite teiginius, kad priverstumėte priklausomybes".


Originalus raštas:

Modifikuotas raštas:



PS: Java kintamųjų inicijavimo tvarka yra: statiniai kintamieji arba statiniai sakinių blokai – > egzemplioriaus kintamieji arba inicijavimo sakinių blokai – >konstravimo metodas – >@Autowired

Taigi kodėl pridėti galutinį tipą prie nario kintamojo?

Internete yra toks paaiškinimas: Numatytosios pupelės taikymo sritis spyruoklinėje konfigūracijoje yra singletonas, kuris visada yra po paleidimo. Paskelbkite, kad pupelės objektas yra dinamiškai sukurtas, nustatydami aprėpties ypatybę į prototipą. Tačiau, jei jūsų paslauga pati yra vienkartinė, injekcija atliekama tik vieną kartą.

@Autowired pats yra singleton režimas, jis bus vykdomas tik vieną kartą, kai programa paleidžiama, ir jis nebus inicijuojamas antrą kartą, net jei jis neapibrėžia finalo, todėl šis galutinis yra beprasmis.

Tai gali būti tam, kad konstruktorius nebūtų vykdomas dar kartą, kol programa veikia;

O gal tai lengviau suprasti, plius galutinis bus inicijuojamas tik vieną kartą, kai programa prasideda.






Ankstesnis:"Spring Boot+maven" greitam projektų kūrimui
Kitą:2018 m. išleistas Kinijos interneto suvenyras
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com