Come posso registrare/aggiungere una routine di spegnimento personalizzata che deve essere attivata quando la mia applicazione Spring Boot si spegne?Spring Spring shutdown hook
Scenario: distribuisco la mia applicazione Spring Boot su un contenitore di servlet Jetty (ad esempio, nessun Jetty incorporato). La mia applicazione utilizza Logback per la registrazione e desidero modificare i livelli di registrazione durante il runtime utilizzando il configuratore JMX MBean di Logback. Its documentation states that to avoid memory leaks, on shutdown a specific LoggerContext shutdown method has to be called.
Quali sono i modi migliori per ascoltare gli eventi di chiusura di Spring Boot?
ho provato:
public static void main(String[] args) throws Exception {
ConfigurableApplicationContext cac = SpringApplication.run(Example.class, args);
cac.addApplicationListener(new ApplicationListener<ContextClosedEvent>() {
@Override
public void onApplicationEvent(ContextClosedEvent event) {
logger.info("Do something");
}
});
}
ma questo ascoltatore registrato non viene chiamato quando l'applicazione viene chiusa.
si sta registrando l'ascoltatore dopo la creazione del contesto, in fondo rendendolo inutilizzabile. Se vuoi che partecipi è necessario registrarlo come bean nel contesto dell'applicazione come qualsiasi altro bean. –
sei riuscito a risolvere questo problema? – pvgoddijn