2009-12-01 5 views
9

Ich habe eine Feder-Anwendung, die nicht Bean zerstören Methoden beim Herunterfahren aufrufen. Ich habe in einem beanRefFactory aufgrund Instanziierung Verweise auf dieses Wesen gesehen, und dass diese manuell umgangen werden kann durch registerShutdownHook() auf einen der Anwendung context.This Aufruf der Methode scheint vom Frühjahr zwischen den Versionen 2.0 verschwunden zu sein - 2.5.Einen Abhebe-Haken in Spring 2.5 registrieren

Kann mir jemand in die Richtung zeigen, wie das jetzt gemacht wird?

Danke.

+0

Könnten Sie einen Link zu der Beschreibung des von Ihnen beschriebenen anfänglichen Problems veröffentlichen? – skaffman

Antwort

17

Diese Methode ist immer noch in verfügbar und wird von AbstractApplicationContext implementiert.

So könnten Sie in der Lage sein, diese

ApplicationContext ctx = ...; 
if (ctx instanceof ConfigurableApplicationContext) { 
    ((ConfigurableApplicationContext)ctx).registerShutdownHook(); 
} 

Alternativ zu tun, Sie einfach ((ConfigurableApplicationContext)ctx).close() sich die Anwendung während der Schließung nennen könnte oder Ihre eigenen Shutdown-Hook mit:

Runtime.getRuntime().addShutdownHook(new Thread() { 
    public void run(){ 
     if (ctx instanceof ConfigurableApplicationContext) { 
      ((ConfigurableApplicationContext)ctx).close(); 
     } 
    } 
}); 
0

So viele upvotes, aber die zweite Aussage völlig falsch ist, wäre ein System.exit in Java den Frühling beenden, bevor überhaupt zu Ihrem shutdownhook bekommen, den richtigen Weg zu gehen, sind diese 4 Möglichkeiten

1 InitializingBean und DisposableBean Callback-Schnittstellen 2 Andere Aware-Schnittstellen für spezifisches Verhalten 3 benutzerdefinierte init() und() Methoden in Bean-Konfigurationsdatei 4 @PostConstruct und @PreDestroy Anmerkungen

Click here zerstören!

Verwandte Themen