Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 25865|Odpověď: 0

[Zdroj] Spring Boot čte (application.yml) hodnotu konfiguračního souboru

[Kopírovat odkaz]
Zveřejněno 07.01.2019 15:37:14 | | | |
První application.yml konfigurační profil je následující:



Projekt Maven pom.xml přidání balíčků:




Vytvořte nový mapovaný objekt s následujícím kódem:

Typ řetězce musí potřebovat nastavovatele, aby mohl přijímat hodnoty vlastností; mapy, kolekce a pole nejsou vyžadovány

Použijte @Autowired anotace k automatickému vkládání, jak je znázorněno na následujícím obrázku:



esConfig vždy vyhodí null, dlouho hledal řešení, ale neuspěl, řešení bude níže.

Vytvoříme nový ovladač, kód je následující:

Injekce je úspěšná a hodnoty konfiguračního souboru yml jsou získány normálně, následovně:



Důvody, proč nelze EsClient úspěšně injektovat, jsou následující:

Vyvoláme funkci této třídy ve konstruktoru a proměnná @Autowired této třídy se použije v této funkciji.

Tak jsem si myslel, že by to mohlo dopadnout špatně. Protože @Autowired musí počkat, až bude třída vytvořena, než ji lze nastavit z externích referencí. Proto musí být doba vstání @Autowired pozdější než čas provedení konstruktoru.
Řešení:

Spring Team doporučuje: "Vždy používejte injekci závislostí založenou na konstruktorech ve svých zrnech. Vždy používejte aserce pro povinné závislosti."

Překlad:

Spring navrhuje: "Vždy si nastavte závislostní injekci s konstruktory ve svém zrně. vždy používejte aserce k vynucení závislostí".


Původní text:

Upravené psaní:



PS: Pořadí inicializace Java proměnných je: statické proměnné nebo statické příkazové bloky – > instanční proměnné nebo inicializační příkazové bloky – >metoda konstrukce – >@Autowired

Tak proč přidávat finální typ k proměnné člena?

Na internetu existuje následující vysvětlení: Rozsah výchozího zrna v pružinové konfiguraci je singleton, který je vždy po startu. Deklarujte objekt zrna jako dynamicky vytvořený nastavením vlastnosti scope na prototyp. Pokud je však vaše služba sama o sobě singleton, injekce se provádí pouze jednou.

@Autowired je singleton mód, bude vykonán pouze jednou při spuštění programu a neinicializuje se podruhé, i když finále nedefinuje, takže tento finále je bezvýznamný.

Může to sloužit k zabránění opětovnému spuštění konstruktoru během běhu programu;

Nebo je to možná snazší pochopit, navíc finální zkouška se inicializuje jen jednou, když program začne.






Předchozí:Spring Boot+maven pro rychlou stavbu projektů
Další:Čínské internetové memorabilia 2018 vydány
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com