Jarné vypnutie spätných volaní

1. Prehľad

V tejto príručke sa naučíme rôzne spôsoby použiť vypínacie spätné volania s jarom.

Hlavnou výhodou použitia spätného volania pri vypnutí je to, že nám poskytuje kontrolu nad ladným ukončením aplikácie.

2. Prístupy spätného volania pri vypínaní

Jar podporuje spätné volania vypínania na úrovni komponentov aj na úrovni kontextu. Tieto spätné volania môžeme vytvoriť pomocou:

  • @PreDestroy
  • Jednorazová fazuľa rozhranie
  • Bean-ničiť metóda
  • Globálne ServletContextListener

Pozrime sa na všetky tieto prístupy s príkladmi.

2.1. Použitím @PreDestroy

Vytvorme fazuľu, ktorá používa @PreDestroy:

@Component public class Bean1 {@PreDestroy public void destru () {System.out.println ("Spätné volanie spustené - @PreDestroy."); }}

Počas inicializácie fazule Spring zaregistruje všetky metódy fazule, ktoré sú anotované @PreDestroy a vyvolá ich, keď sa aplikácia vypne.

2.2. Pomocou Jednorazová fazuľa Rozhranie

Naša druhá fazuľa bude implementovať Jednorazová fazuľa rozhranie na registráciu spätného volania vypnutia:

@Component public class Bean2 implementuje DisposableBean {@Override public void destru () hodí Exception {System.out.println ("Spätné volanie spustené - DisposableBean."); }}

2.3. Vyhlásenie metódy Bean Destroy

Pre tento prístup najskôr vytvoríme triedu s metódou vlastného zničenia:

public class Bean3 {public void zničiť () {System.out.println ("Spätné volanie spustené - metóda zničenia fazule."); }}

Potom vytvoríme konfiguračnú triedu, ktorá inicializuje fazuľa a označí jej zničiť () metóda ako naše spätné volanie pri vypnutí:

@Configuration verejná trieda ShutdownHookConfiguration {@Bean (zničiťMethod = "zničiť") verejná Bean3 initializeBean3 () {vrátiť nový Bean3 (); }}

XML spôsob registrácie metódy zničenia je:

2.4. Pomocou globálneho ServletContextListener

Na rozdiel od ostatných troch prístupov, ktoré registrujú spätné volanie na úrovni fazule, the ServletContextListener zaregistruje spätné volanie na kontextovej úrovni.

Vytvorme si preto vlastného poslucháča kontextu:

verejná trieda ExampleServletContextListener implementuje ServletContextListener {@Override public void contextDestroyed (udalosť ServletContextEvent) {System.out.println ("Spätné volanie spustené - ContextListener."); } @Override public void contextInitialized (ServletContextEvent event) {// Spustí sa pri inicializácii kontextu}}

Musíme to zaregistrovať do ServletListenerRegistrationBean v konfiguračnej triede:

@Bean ServletListenerRegistrationBean servletListener () {ServletListenerRegistrationBean srb = nový ServletListenerRegistrationBean (); srb.setListener (nový ExampleServletContextListener ()); návrat srb; }

3. Záver

Dozvedeli sme sa o rôznych spôsoboch, ktoré Spring poskytuje pri registrácii spätných volaní pri vypnutí, a to na úrovni fazule aj na úrovni kontextu.

Môžu byť použité na plynulé a efektívne vypnutie aplikácie a efektívne uvoľnenie použitých zdrojov.

Všetky príklady uvedené v tomto článku nájdete ako vždy na serveri Github.


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