Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 25865|Válasz: 0

[Forrás] A Spring Boot (application.yml) olvassa a konfigurációs fájl értékét

[Linket másol]
Közzétéve 2019. 01. 07. 15:37:14 | | | |
Az első application.yml konfigurációs profil a következő:



Maven projekt pom.xml csomagok hozzáadása:




Hozz létre egy új leképezett objektumot a következő kóddal:

A string típusnak szüksége kell egy setterre a tulajdonságértékek fogadásához; Térképek, gyűjtemények és tömbök nem szükségesek

Használj @Autowired annotációkat az automatikus injektáláshoz, ahogy az alábbi képen is látható:



Az esConfig mindig null kimenetet ad, hosszú ideig kerestem megoldást, de sikertelenül, lentebb lesz megoldás.

Hozzunk létre egy új vezérlőt, a kód a következő:

Az injekció sikeres, és az yml konfigurációs fájl értékei normálisan kapják meg a következőket:



Az EsClient injektálásának okai a következők:

Hívjuk meg ennek az osztálynak a függvényét a konstruktorban, és ennek az osztálynak a @Autowired változóját használják ebben a függvényben.

Szóval azt hittem, hogy rosszul sülhet el. Mert @Autowired várniuk kell, amíg az osztály megépül, mielőtt külső hivatkozásokból be lehetne állítani. Ezért @Autowired befecskendezési idejének későbbnek kell lennie, mint a konstruktor végrehajtási ideje.
Megoldás:

A Spring Team azt javasolja: "Mindig használj építő alapú függőségi injekciót a babodban. Mindig használj állításokat kötelező függőségekhez."

Fordítás:

A Spring azt javasolja: "Mindig alakíts ki függőségi injekciót a babodban lévő konstruktorokkal. mindig használj állításokat függőségek kényszerítésére".


Eredeti írás:

Módosított írás:



PS: A Java változók inicializációs sorrendje a következő: statikus változók vagy statikus állításblokkok – > instance változók vagy inicializációs utasításblokkok – >építési módszer – >@Autowired

Akkor miért adják hozzá a végső típust a tagváltozóhoz?

Az interneten a következő magyarázat található: Az alapértelmezett bab hatóköre a tavaszi konfigurációban singleton, ami az indítás után mindig ott van. Nyilvánítsuk be a bab objektumát dinamikusan létrehozottnak azzal, hogy a scope tulajdonságot prototípusra állítjuk. Ha viszont maga a szolgáltatásod egy-egy injekció, akkor az injekciót csak egyszer hajtják végre.

@Autowired maga egy-egy mód, csak egyszer hajtják végre a program indításakor, és nem indul második alkalommal is, még akkor sem, ha nem határoz meg véglegeset, így ez a záró értelmetlen.

Lehet, hogy megakadályozza, hogy a konstruktor újra elinduljon a program futása közben;

Vagy talán könnyebb megérteni, ráadásul a végső csak egyszer indul el a program.






Előző:Spring Boot+maven gyors projektek építéséhez
Következő:2018 China Internet Remorabilia megjelenése
Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com