在Spring 2.5中注册关闭钩子

Ste*_* B. 9 java spring

我有一个spring应用程序,它不会在关闭时调用bean destroy方法.我已经看到了由于在beanRefFactory实例化这个存在引用,这可以通过手动调用registerShutdownHook()上的应用context.This方法来规避似乎已经从版本2.0之间的弹簧消失 - 2.5.

有人能指出我现在的方向吗?

谢谢.

sfu*_*ger 17

此方法仍然可用ConfigurableApplicationContext并实现AbstractApplicationContext.

所以你可能会这样做

ApplicationContext ctx = ...;
if (ctx instanceof ConfigurableApplicationContext) {
    ((ConfigurableApplicationContext)ctx).registerShutdownHook();
}
Run Code Online (Sandbox Code Playgroud)

或者,您可以((ConfigurableApplicationContext)ctx).close()在关闭应用程序或使用自己的关闭挂钩时自行调用自己:

Runtime.getRuntime().addShutdownHook(new Thread() {
    public void run(){
       if (ctx instanceof ConfigurableApplicationContext) {
           ((ConfigurableApplicationContext)ctx).close();
       }
    }
 });
Run Code Online (Sandbox Code Playgroud)