Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 25865|Atbildi: 0

[Avots] Spring Boot nolasa (application.yml) konfigurācijas faila vērtību

[Kopēt saiti]
Publicēts 07.01.2019 15:37:14 | | | |
Pirmā application.yml konfigurācijas profils ir šāds:



Maven projekts pom.xml pievienot pakotnes:




Izveidojiet jaunu kartētu objektu ar šādu kodu:

Virknes tipam ir jābūt iestatītājam, lai saņemtu rekvizītu vērtības; Kartes, kolekcijas un masīvi nav nepieciešami

Izmantojiet @Autowired anotācijas, lai automātiski injicētu, kā parādīts nākamajā attēlā:



esConfig vienmēr izvada nulli, ilgu laiku meklēja risinājumu, bet neizdevās, zemāk būs risinājums.

Izveidosim jaunu kontrolieri, kods ir šāds:

Injekcija ir veiksmīga, un yml konfigurācijas faila vērtības tiek iegūtas normāli, šādi:



Iemesli, kāpēc EsClient nevar veiksmīgi injicēt, ir šādi:

Izsauciet šīs klases funkciju konstruktorā, un šajā funkcijā tiek izmantots šīs klases @Autowired mainīgais.

Tāpēc es domāju, ka tas varētu noiet greizi. Jo @Autowired ir jāgaida, līdz klase tiks izveidota, pirms to var iestatīt no ārējām atsaucēm. Tāpēc @Autowired injekcijas laikam jābūt vēlākam par konstruktora izpildes laiku.
Šķīdums:

Pavasara komanda iesaka "Vienmēr izmantojiet konstruktoru balstītu atkarības injekciju pupiņās. Vienmēr izmantojiet apgalvojumus par obligātajām atkarībām".

Tulkošana:

Pavasaris iesaka: "Vienmēr izveidojiet atkarības injekciju ar konstruktoriem pupiņās. vienmēr izmantojiet apgalvojumus, lai piespiestu atkarības".


Oriģinālais raksts:

Modificēta rakstīšana:



PS: Java mainīgo inicializācijas secība ir: statiskie mainīgie vai statiskie priekšrakstu bloki - > instances mainīgie vai inicializācijas paziņojumu bloki - >konstrukcijas metode - >@Autowired

Tātad, kāpēc pievienot galīgo tipu dalībnieka mainīgajam?

Internetā ir šāds skaidrojums: Noklusējuma pupiņu apjoms pavasara konfigurācijā ir singletons, kas vienmēr ir pēc startēšanas. Paziņojiet, ka pupiņas objekts ir dinamiski izveidots, iestatot tvēruma rekvizītu uz prototipu. Tomēr, ja jūsu pakalpojums pats par sevi ir singleton, injekcija tiek veikta tikai vienu reizi.

@Autowired pats par sevi ir vientuļš režīms, tas tiks izpildīts tikai vienu reizi, kad programma sāksies, un tas netiks inicializēts otro reizi, pat ja tas nedefinē finālu, tāpēc šis fināls ir bezjēdzīgs.

Tas var būt, lai novērstu konstruktora atkārtotu izpildi, kamēr programma darbojas;

Vai varbūt tas ir vieglāk saprotams, kā arī galīgais tiks inicializēts tikai vienu reizi, kad programma tiek startēta.






Iepriekšējo:Spring Boot+maven, lai ātri veidotu projektus
Nākamo:Izlaistas 2018. gada Ķīnas interneta piemiņas lietas
Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com