Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 25865|Odgovoriti: 0

[Vir] Spring Boot prebere (application.yml) vrednost konfiguracijske datoteke

[Kopiraj povezavo]
Objavljeno na 7. 01. 2019 15:37:14 | | | |
Prvi application.yml konfiguracijski profil je naslednji:



Projekt Maven pom.xml dodajanje paketov:




Ustvarite nov preslikan objekt z naslednjo kodo:

Tip niza mora za prejemanje vrednosti lastnosti zahtevati nastavljalca; zemljevidi, zbirke in polja niso potrebni

Uporabite @Autowired opomb za samodejno vbrizgavanje, kot je prikazano na naslednji sliki:



esConfig vedno izpiše null, dolgo sem iskal rešitev, a ni uspela, spodaj bo rešitev.

Ustvarimo nov krmilnik, koda je naslednja:

Vbrizgavanje je uspešno, vrednosti konfiguracijske datoteke yml pa se dobijo običajno, kot sledi:



Razlogi, zakaj EsClient ni mogoče uspešno vbrizgati, so naslednji:

Pokličimo funkcijo tega razreda v konstruktorju, spremenljivka @Autowired tega razreda pa se uporabi v tej funkciji.

Zato sem mislil, da bi lahko šlo kaj narobe. Ker @Autowired mora počakati, da se razred konstruira, preden ga lahko nastavimo iz zunanjih referenc. Zato mora biti čas vbrizgavanja @Autowired kasnejši od časa izvedbe konstruktorja.
Rešitev:

Spring Team priporoča: "Vedno uporabljajte vbrizgavanje odvisnosti na osnovi konstruktorja v svojih zrnih. Vedno uporabljajte trditve za obvezne odvisnosti."

Prevod:

Spring predlaga: »Vedno vzpostavite injiciranje odvisnosti s konstruktorji v svojem zrnu. vedno uporabljajte trditve za prisilitev odvisnosti".


Izvirno pisanje:

Spremenjeno besedilo:



PS: Inicializacijski vrstni red Java spremenljivk je: statične spremenljivke ali statični stavkovni bloki – > instancijskih spremenljivk ali inicializacijski stavkovni bloki – >metoda gradnje – >@Autowired

Zakaj torej dodajati končni tip članski spremenljivki?

Na internetu obstaja razlaga kot naslednja: Obseg privzetega zrna v vzmetni konfiguraciji je singleton, ki je vedno prisoten po zagonu. Objekt zrna označite kot dinamično ustvarjen tako, da nastavite lastnost obsega na prototip. Če pa je vaša storitev samostojna, se injekcija izvede le enkrat.

@Autowired sam je enojni način, izvede se le enkrat, ko se program začne, in se ne inicializira drugič, tudi če ne definira končnega zaključka, zato je ta končni način brez pomena.

Morda je namenjen preprečevanju ponovnega izvajanja konstruktorja med izvajanjem programa;

Ali pa je morda lažje razumeti, poleg tega pa se končni program inicializira le enkrat, ko se program začne.






Prejšnji:Spring Boot+maven za hitro gradnjo projektov
Naslednji:Kitajski internetni spominki iz leta 2018, izdani
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com