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.