Lusta inicializálás a tavaszi csomagtartóban 2

1. Áttekintés

Ebben az oktatóanyagban megnézzük, hogyan kell konfigurálni a lusta inicializálást az alkalmazás szintjén, kezdve a Spring Boot 2.2-től

2. Lusta inicializálás

Alapértelmezés szerint tavasszal az összes definiált bab és annak függősége az alkalmazáskörnyezet létrehozásakor jön létre.

Ezzel szemben, amikor egy babot lusta inicializálással konfigurálunk, a bab csak akkor jön létre, és függőségei injektálódnak, ha szükség van rájuk.

3. A Maven-függőség

Ahhoz, hogy alkalmazásunkba bekerüljön a Spring Boot 2.2, be kell építenünk az osztályútba.

Maven-nel csak hozzáadhatjuk a rugós-bakancs-indító függőség:

  org.springframework.boot spring-boot-starter 2.2.2.FELHASZNÁLÁS 

4. Engedélyezze a Lusta inicializálást

A Spring Boot 2.2 bemutatja a tavasz.főbb.lusta-inicializálás tulajdonság, megkönnyítve a lusta inicializálás konfigurálását az egész alkalmazásban.

A tulajdonság értékének beállítása igaz azt jelenti, hogy az alkalmazás összes babja lusta inicializálást fog használni.

Konfiguráljuk a tulajdonságot a alkalmazás.yml konfigurációs fájl:

tavasz: fő: lusta-inicializálás: igaz

Vagy, ha ez a helyzet, a miénkben alkalmazás.tulajdonságok fájl:

tavasz.fõ.lusta-inicializálás = igaz

Ez a konfiguráció az összes babot érinti a kontextusban. Tehát, ha a lusta inicializálást egy adott babhoz szeretnénk konfigurálni, akkor a @Lusta megközelítés.

Még többet használhatjuk az új tulajdonságot, a @Lusta annotáció, állítva hamis.

Vagy más szavakkal: az összes definiált bab lusta inicializálást alkalmaz, kivéve azokat, amelyeket kifejezetten konfigurálunk @Lazy (hamis).

5. Fuss

Hozzunk létre egy egyszerű szolgáltatást, amely lehetővé teszi számunkra, hogy teszteljük az imént leírtakat.

Ha hozzáad egy üzenetet a konstruktorhoz, pontosan megtudjuk, mikor jön létre a bab.

public class Író {private final Sztring íróId; public Writer (String íróId) {this.writerId = íróId; System.out.println (íróId + "inicializálva !!!"); } public void write (String üzenet) {System.out.println (íróId + ":" + üzenet); }}

Hozzuk létre a SpringApplication és beadja a korábban létrehozott szolgáltatást.

@SpringBootApplication public class Application {@Bean ("író1") public Writer getWriter1 () {return new Writer ("1. író"); } @Bean ("író2") public Writer getWriter2 () {return new Writer ("2. író"); } public static void main (String [] args) {ApplicationContext ctx = SpringApplication.run (Application.class, args); System.out.println ("Alkalmazáskörnyezet inicializálva !!!"); Íróíró1 = ctx.getBean ("író1", Író.osztály); író1.írja ("Első üzenet"); Íróíró2 = ctx.getBean ("író2", Író.osztály); író2.írja ("Második üzenet"); }}

Állítsuk be a tavasz.főbb.lusta-inicializálás tulajdonság értéke hamis, és futtassa az alkalmazásunkat.

1. író inicializálva !!! 2. író inicializálva !!! Az alkalmazás kontextusa inicializálva van !!! 1. író: első üzenet 2. író: második üzenet

Mint láthatjuk, a babot akkor hozták létre, amikor az alkalmazás kontextusa elindult.

Most változtassuk meg a tavasz.főbb.lusta-inicializálás nak nek igaz, és futtassa újra az alkalmazást.

Az alkalmazás kontextusa inicializálva van !!! 1. író inicializálva !!! 1. író: Első üzenet A 2. író inicializálva van !!! 2. író: Második üzenet

Ennek eredményeként az alkalmazás nem az indításkor hozta létre a babot, hanem csak akkor, amikor szüksége volt rájuk.

6. A lusta inicializálás hatásai

A lusta inicializálás engedélyezése az egész alkalmazásban pozitív és negatív hatásokat is eredményezhet.

Beszéljünk ezek közül néhányról, amint azokat az új funkció hivatalos bejelentése leírja:

  1. A lusta inicializálás csökkentheti az alkalmazás indításakor létrehozott babok számát - ezért javíthatjuk az indítási időt az alkalmazás
  2. Mivel egyik bab sem jön létre addig, amíg nincs rá szükség, elfedhetjük a problémákat, az indítási idő helyett a futási időben
  3. A problémák magukban foglalhatják a memórián kívüli hibákat, hibás konfigurációkat vagy osztály-meghatározás által talált hibákat
  4. Továbbá, amikor webes kontextusban vagyunk, igény esetén a bab létrehozásának kiváltása növeli a HTTP kérések késését - a bab létrehozása csak az első kérést érinti, de ennek negatív hatása lehet a terheléselosztásra és az automatikus méretezésre.

7. Következtetés

Ebben az oktatóanyagban a lusta inicializálást konfiguráltuk az új tulajdonsággal tavasz.főbb.lusta-inicializálás, bevezetve a Spring Boot 2.2-ben.

Mint mindig, az oktatóanyag forráskódja is elérhető a GitHubon.


$config[zx-auto] not found$config[zx-overlay] not found