Kratki vodič za proljetno bilježenje @ lijeno

1. Pregled

Prema zadanim postavkama Spring stvara sve singleton grah nestrpljivo pri pokretanju / pokretanju konteksta aplikacije. Razlog tome je jednostavan: izbjegavanje i otkrivanje svih mogućih pogrešaka odmah, a ne tijekom izvođenja.

Međutim, postoje slučajevi kada trebamo stvoriti grah, ne prilikom pokretanja konteksta aplikacije, već kada to zatražimo.

U ovom brzom vodiču razgovarat ćemo o Springu @Lijen bilješka.

2. Lijena inicijalizacija

The @Lijen napomena prisutna je od proljetne verzije 3.0. Postoji nekoliko načina kako reći IoC spremniku da lijeno inicijalizira grah.

2.1. @Konfiguracija Razred

Kad stavimo @Lijen bilješka nad @Konfiguracija klase, označava da su sve metode s @Grah napomenu treba lijeno učitati.

To je ekvivalent za XML konfiguracije zadani-lijeni-init ="pravi atribut.

Pogledajmo ovdje:

@Lazy @Configuration @ComponentScan (basePackages = "com.baeldung.lazy") javna klasa AppConfig {@Bean public Region getRegion () {return new Region (); } @Bean public Country getCountry () {return new Country (); }}

Isprobajmo sada funkcionalnost:

@Test javna praznina givenLazyAnnotation_whenConfigClass_thenLazyAll () {AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext (); ctx.register (AppConfig.class); ctx.refresh (); ctx.getBean (Region.class); ctx.getBean (Country.class); }

Kao što vidimo, svi grah stvara se samo kad ga zatražimo prvi put:

Tvornica graha za ... AnnotationConfigApplicationContext: ... DefaultListableBeanFactory: [...]; // pokrenut je kontekst aplikacije Bean inicijaliziran Bean Region Inicijaliziran Bean Country

Da bismo to primijenili samo na određeni grah, uklonimo @Lijen iz razreda.

Zatim ga dodamo u konfiguraciju željenog graha:

@Bean @Lazy (true) public Region getRegion () {return new Region (); }

2.2 sa @Autowired

Prije nego što nastavite, pogledajte ove vodiče za @Autowired i @Komponenta bilješke.

Ovdje, kako bismo inicijalizirali lijeni grah, upućujemo ga na drugi.

Grah koji želimo lijeno utovariti:

@Lazy @Component javna klasa City {public City () {System.out.println ("Gradski grah je inicijaliziran"); }}

I to je referenca:

javna klasa Regija {@Lazy @Autowired privatni grad; public Region () {System.out.println ("Inicijaliziran grah regije"); } public City getCityInstance () {return city; }}

Imajte na umu da @Lijen je obavezna na oba mjesta.

Uz @Komponenta bilješka na Grad razreda i dok ga referencira s @Autowired:

@Test javna praznina givenLazyAnnotation_whenAutowire_thenLazyBean () {// učitavanje konteksta aplikacije ctx Region region = ctx.getBean (Region.class); region.getCityInstance (); }

Ovdje, the Grad bean se inicijalizira samo kada pozovemo getCityInstance () metoda.

3. Zaključak

U ovom smo brzom uputstvu naučili osnove Spring'sa @Lijen bilješka. Ispitali smo nekoliko načina kako ga konfigurirati i koristiti.

Kao i obično, cjeloviti kôd ovog vodiča dostupan je na GitHubu.


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