Povratni pozivi za proljetno isključivanje

1. Pregled

U ovom uputstvu naučit ćemo različite načine koristiti povratne pozive za isključivanje s Springom.

Glavna prednost korištenja povratnog poziva za isključivanje je što nam daje kontrolu nad gracioznim izlaskom iz aplikacije.

2. Pristupi isključivanju povratnih poziva

Spring podržava povratne pozive za isključivanje na razini komponente i na razini konteksta. Te povratne pozive možemo stvoriti pomoću:

  • @PreDestroy
  • DisposableBean sučelje
  • Metoda uništavanja graha
  • Globalno ServletContextListener

Pogledajmo sve ove pristupe na primjerima.

2.1. Koristeći @PreDestroy

Stvorimo grah koji koristi @PreDestroy:

@Component javna klasa Bean1 {@PreDestroy public void uništavanje () {System.out.println ("Pokrenuti povratni poziv - @PreDestroy."); }}

Tijekom inicijalizacije graha, Spring će registrirati sve metode graha koje su označene @PreDestroy i poziva ih kad se aplikacija isključi.

2.2. Koristiti DisposableBean Sučelje

Naš drugi grah će implementirati DisposableBean sučelje za registraciju povratnog poziva za isključivanje:

@Component javna klasa Bean2 implementira DisposableBean {@Override public void uništavanje () baca izuzetak {System.out.println ("Pokrenuti povratni poziv - DisposableBean."); }}

2.3. Proglašavanje metode uništavanja graha

Za ovaj pristup prvo ćemo stvoriti klasu s prilagođenom metodom uništavanja:

javna klasa Bean3 {javna praznina uništava () {System.out.println ("Pokrenuti povratni poziv - metoda uništavanja graha."); }}

Zatim kreiramo klasu konfiguracije koja inicijalizira grah i označava ga uništiti() metoda kao naš povratni poziv za isključivanje:

@Configuration javna klasa ShutdownHookConfiguration {@Bean (uništiMethod = "uništi") javni Bean3 initializeBean3 () {return new Bean3 (); }}

XML način registracije metode uništavanja je:

2.4. Korištenje globalnog ServletContextListener

Za razliku od ostala tri pristupa, koji povratni poziv registriraju na razini graha, the ServletContextListener registrira povratni poziv na razini konteksta.

Za ovo napravimo prilagođeni preslušavač konteksta:

javna klasa ExampleServletContextListener implementira ServletContextListener {@Override public void contextDestroyed (ServletContextEvent event) {System.out.println ("Pokrenuti povratni poziv - ContextListener."); } @Override public void contextInitialized (ServletContextEvent event) {// Okida se kada se kontekst inicijalizira}}

Moramo ga registrirati na ServletListenerRegistrationBean u klasi konfiguracije:

@Bean ServletListenerRegistrationBean servletListener () {ServletListenerRegistrationBean srb = new ServletListenerRegistrationBean (); srb.setListener (novi ExampleServletContextListener ()); vratiti srb; }

3. Zaključak

Saznali smo o različitim načinima koje Spring nudi za registriranje povratnih poziva za isključivanje, kako na razini graha tako i na razini konteksta.

Oni se mogu koristiti za graciozno isključivanje aplikacije i učinkovito oslobađanje korištenih resursa.

Kao i uvijek svi primjeri spomenuti u ovom članku mogu se naći na Githubu.


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