Tavaszi leállítás visszahívások

1. Áttekintés

Ebben az oktatóanyagban különböző módszereket fogunk megtanulni hogy a leállítási visszahívásokat használja a Spring-szel.

A leállítási visszahívás használatának legfőbb előnye, hogy kontrollt ad nekünk egy kecses alkalmazás kilépés felett.

2. Visszahívási módszerek leállítása

A Spring mind az összetevő, mind a kontextus szintű leállítás visszahívásokat támogatja. Ezeket a visszahívásokat létrehozhatjuk:

  • @PreDestroy
  • Eldobható bab felület
  • Bab-pusztító módszer
  • Globális ServletContextListener

Nézzük meg ezeket a megközelítéseket példákkal.

2.1. Használata @PreDestroy

Hozzunk létre egy babot, amely használja @PreDestroy:

@Component public class Bean1 {@PreDestroy public void destr () {System.out.println ("Visszahívás indult - @PreDestroy."); }}

A bab inicializálása során Spring regisztrálja az összes bab módszert, amellyel jegyzetelt @PreDestroy és meghívja őket, amikor az alkalmazás leáll.

2.2. Használni a Eldobható bab Felület

Második babunk a Eldobható bab felület a leállítási visszahívás regisztrálásához:

@Component public class Bean2 implementates DisposableBean {@Override public void destr () dobja a (z) {System.out.println kivételt ("Visszahívás kiváltva - DisposableBean."); }}

2.3. Bean Destroy Method deklarálása

Ehhez a megközelítéshez először létrehozunk egy osztályt egy egyedi megsemmisítési módszerrel:

Bean3 public class {public void destr (() {System.out.println ("Visszahívás kiváltva - bab megsemmisítési módszer."); }}

Ezután létrehozzuk azt a konfigurációs osztályt, amely inicializálja a babot és megjelöli azt elpusztítani() módszer, mint leállítási visszahívásunk:

@Configuration nyilvános osztály ShutdownHookConfiguration {@Bean (destrMethod = "megsemmisíteni") public Bean3 initializeBean3 () {return new Bean3 (); }}

A megsemmisítési módszer XML-regisztrációja:

2.4. Globális használata ServletContextListener

A másik három megközelítéstől eltérően, amelyek a visszahívást bab-szinten regisztrálják, a ServletContextListener a visszahívást kontextus szinten regisztrálja.

Ehhez hozzunk létre egy egyedi környezetfigyelőt:

public class ExampleServletContextListener megvalósítja a ServletContextListener {@Override public void contextDestroyed (ServletContextEvent esemény) {System.out.println ("Visszahívás kiváltva - ContextListener."); } @Orride public void contextInitialized (ServletContextEvent event) {// A környezet inicializálásakor vált ki}}

Regisztrálnunk kell a ServletListenerRegistrationBean a konfigurációs osztályban:

@Bean ServletListenerRegistrationBean servletListener () {ServletListenerRegistrationBean srb = új ServletListenerRegistrationBean (); srb.setListener (új példaServletContextListener ()); return srb; }

3. Következtetés

Megismertük, hogy a Spring milyen módon regisztrálja a leállítási visszahívásokat, mind bab, mind kontextus szintjén.

Ezekkel fel lehet használni az alkalmazás kecses leállítását és hatékonyan felszabadítani a felhasznált erőforrásokat.

Mint mindig, a cikkben említett összes példa megtalálható a Github oldalon.


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