Quando la mia primavera web app si chiude, c'è un evento che posso wireup in qualche modo che io possa eseguire un certo codice di pulitura per svuotare alcune piscine eccLa primavera ha un processo di arresto per inserire il codice di pulizia?
risposta
è possibile utilizzare il seguente
distruggere metodo
come @ amir75 raccomanda@PreDestroy annotazione
Implementare DisposableBean e sovrascrivere il metodo distruggere.
Tutti i deatails su questi possono essere trovati a Disposable Callbacks.
bean Spring avere un attributo 'distruggere metodo', che sarà essere invocato quando "chiudi" il tuo contesto.
<bean id="bean1"
destroy-method="stop"
class="com.example.Bean" />
Per chiuderlo, ci si chiama il metodo close():
(o semplicemente spegnere il contenitore, se del caso)
Speranza che aiuta.
Il modo non Spring per gestire ciò è scrivere una classe che implementa ServletContextListener
ed eseguire la pulizia nei suoi contextDestroyed
m etodo. Dovresti aggiungere la tua classe come listener di contesto in web.xml.
In base alle specifiche JSR-250, la migliore pratica da utilizzare nelle moderne applicazioni di primavera è l'annotazione @PreDestroy
poiché l'utilizzo di questo approccio disaccoppierà i bean da Spring.
Secondo la primavera Boot logback progetto di esempio, si dovrebbe chiudere il contesto per ripulire il sistema di registrazione: https://github.com/spring-projects/spring-boot/commit/10402a651f1ee51704b58985c7ef33619df2c110
Esempio:
public static void main(String[] args) throws Exception {
SpringApplication.run(SampleLogbackApplication.class, args).close();
}
- 1. Gancio di arresto per Rails
- 2. dove posso inserire il codice in Sinatra che voglio eseguire quando l'app è in arresto?
- 3. Java oneliner per la lista di pulizia
- 4. Arresto del processo di indicizzazione Magento
- 5. corretta pulizia del codice
- 6. arresto docker non funziona per il processo nodo
- 7. Dove inserire il codice per l'avvio dell'applicazione?
- 8. Un thread Java ha il proprio ID di processo?
- 9. Dispose() per la pulizia delle risorse gestite?
- 10. Pulizia di un oggetto @RequestScoped?
- 11. codice sorgente longpolling di primavera?
- 12. pulizia di un Mercurial Repository
- 13. Force ReSharper per utilizzare le impostazioni di StyleCop per la pulizia del codice
- 14. Modo corretto per impostare il codice di uscita del processo?
- 15. Dove posso inserire il mio codice di back-end per il tentativo di resque-retry?
- 16. Un processo che serve il pool di applicazioni 'X' ha subito un errore di comunicazione fatale con il servizio Attivazione processo di Windows
- 17. Perché Perl è $? restituire il valore errato per il codice di uscita di un processo biforcato?
- 18. Il processo FastCGI ha superato il timeout di attività configurato
- 19. Qual è il modo corretto di aggiungere un gancio di arresto per un'applicazione RCP Eclipse?
- 20. per iniziare con la struttura di primavera
- 21. Eliminazione della conferma "buffer ha processo in corso" quando il processo è un processo flymake
- 22. Userà la memoria di pulizia MarshalAs (UnmanagedType.LPWStr)?
- 23. Perché il codice di caricamento blobstore ha l'URL di reindirizzamento
- 24. Arresto del processo node.js su Mac
- 25. TCP Send non restituisce causa processo di arresto anomalo
- 26. Pulire configurazione ripetitiva e la pulizia del codice Java (JDBC)
- 27. Arresto Android processo Studio Shell non smetterà di test
- 28. Pulizia del popen di Python
- 29. Modo corretto di "arresto" di un contesto di primavera in J2SE
- 30. Strumento per la pulizia dei colori CSS
Il problema di questo approccio è che la primavera è probabilmente facendo la stessa cosa, e non è ovvio se il listener di contesto del servlet personalizzato verrà eseguito prima ... o dopo quello di Spring. Questo potrebbe rendere la vita difficile. –