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:
- 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
- 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
- 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
- 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.