Terugbelverzoeken in de lente
1. Overzicht
In deze tutorial gaan we verschillende manieren leren om shutdown-callbacks te gebruiken met Spring.
Het belangrijkste voordeel van het gebruik van een shutdown-callback is dat het ons controle geeft over het netjes afsluiten van een applicatie.
2. Stop terugbelbenaderingen
Spring ondersteunt zowel de callbacks op componentniveau als op contextniveau. We kunnen deze callbacks maken met behulp van:
- @PreDestroy
- Wegwerpboon koppel
- Bonenvernietigingsmethode
- Globaal ServletContextListener
Laten we al deze benaderingen met voorbeelden bekijken.
2.1. Gebruik makend van @PreDestroy
Laten we een boon maken die gebruikmaakt van @PreDestroy:
@Component openbare klasse Bean1 {@PreDestroy openbare ongeldige vernietiging () {System.out.println ("Terugbellen geactiveerd - @PreDestroy."); }}
Tijdens de initialisatie van de bonen registreert Spring alle bean-methoden die zijn geannoteerd @PreDestroy en roept ze aan wanneer de applicatie wordt afgesloten.
2.2. De ... gebruiken Wegwerpboon Koppel
Onze tweede boon zal het Wegwerpboon interface om de afsluiting callback te registreren:
@Component public class Bean2 implementeert DisposableBean {@Override public void destroy () gooit uitzondering {System.out.println ("Callback geactiveerd - DisposableBean."); }}
2.3. Een methode voor het vernietigen van bonen aangeven
Voor deze benadering maken we eerst een klasse met een aangepaste vernietigingsmethode:
public class Bean3 {public void destroy () {System.out.println ("Callback geactiveerd - bean destroy methode."); }}
Vervolgens maken we de configuratieklasse die de bean initialiseert en zijn vernietigen() methode als onze shutdown callback:
@Configuration openbare klasse ShutdownHookConfiguration {@Bean (destroyMethod = "destroy") openbare Bean3 initializeBean3 () {retourneer nieuwe Bean3 (); }}
De XML-manier om de vernietigingsmethode te registreren is:
2.4. Met behulp van een Global ServletContextListener
In tegenstelling tot de andere drie benaderingen, die de callback op bean-niveau registreren, de ServletContextListener registreert de callback op contextniveau.
Laten we hiervoor een aangepaste contextlistener maken:
public class ExampleServletContextListener implementeert ServletContextListener {@Override public void contextDestroyed (ServletContextEvent-gebeurtenis) {System.out.println ("Callback geactiveerd - ContextListener."); } @Override public void contextInitialized (ServletContextEvent-gebeurtenis) {// Triggers wanneer context wordt geïnitialiseerd}}
We moeten het registreren bij het ServletListenerRegistrationBean in de configuratieklasse:
@Bean ServletListenerRegistrationBean servletListener () {ServletListenerRegistrationBean srb = nieuwe ServletListenerRegistrationBean (); srb.setListener (nieuwe ExampleServletContextListener ()); retourneer srb; }
3. Conclusie
We hebben geleerd over de verschillende manieren waarop Spring biedt om shutdown-callbacks te registreren, zowel op bean-niveau als op contextniveau.
Deze kunnen worden gebruikt om de applicatie netjes af te sluiten en effectief de gebruikte bronnen vrij te maken.
Zoals altijd zijn alle voorbeelden die in dit artikel worden genoemd, te vinden op Github.