Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Spring 2.5中注册关机挂钩_Java_Spring - Fatal编程技术网

Java 在Spring 2.5中注册关机挂钩

Java 在Spring 2.5中注册关机挂钩,java,spring,Java,Spring,我有一个spring应用程序,它在关机时不调用bean销毁方法。我已经看到对这一点的引用是由于BeanRefactory中的实例化,可以通过在应用程序上下文上手动调用RegisterSutdownhook()来避免这一点。这个方法似乎在spring 2.0-2.5版本之间消失了 有人能告诉我现在是怎么做的吗 谢谢。此方法在中仍然可用,并由实现 所以你也许能做到这一点 ApplicationContext ctx = ...; if (ctx instanceof ConfigurableAppl

我有一个spring应用程序,它在关机时不调用bean销毁方法。我已经看到对这一点的引用是由于BeanRefactory中的实例化,可以通过在应用程序上下文上手动调用RegisterSutdownhook()来避免这一点。这个方法似乎在spring 2.0-2.5版本之间消失了

有人能告诉我现在是怎么做的吗


谢谢。

此方法在中仍然可用,并由实现

所以你也许能做到这一点

ApplicationContext ctx = ...;
if (ctx instanceof ConfigurableApplicationContext) {
    ((ConfigurableApplicationContext)ctx).registerShutdownHook();
}
或者,您可以简单地调用
((ConfigurableApplicationContext)ctx)。关闭()
自己关闭应用程序或使用自己的关闭挂钩:

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

这么多的Upvots,但是第二个语句是完全错误的,java中的system.exit会在到达shutdownhook之前终止spring,正确的方法是以下4种方法

1初始化Bean和DisposableBean回调接口 2个用于特定行为的其他感知接口 bean配置文件中的3个自定义init()和destroy()方法 4@施工后和@施工前注释


点击

你能发布一个链接到你描述的最初问题的描述吗?