Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.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 在销毁ApplicationContext之前立即触发的Spring关机事件?_Java_Spring_Destroy_Applicationcontext - Fatal编程技术网

Java 在销毁ApplicationContext之前立即触发的Spring关机事件?

Java 在销毁ApplicationContext之前立即触发的Spring关机事件?,java,spring,destroy,applicationcontext,Java,Spring,Destroy,Applicationcontext,我正在寻找一个拦截器或触发器,以了解所有上下文bean都已销毁,applicationcontext实例即将销毁自身。因此,我可以在应用程序生命周期结束时执行一个进程 有一个事件类型ContextClosedEvent,它与我想做的事情很接近,但它在销毁bean后抛出事件。我认为它与applicationcontext的close()方法一起提供。所以它不适合我的需要 有什么想法吗 问候 Ali您可以使用抽象应用程序上下文类的registerShutDownHook()方法。有关更多详细信息,请

我正在寻找一个拦截器或触发器,以了解所有上下文bean都已销毁,applicationcontext实例即将销毁自身。因此,我可以在应用程序生命周期结束时执行一个进程

有一个事件类型ContextClosedEvent,它与我想做的事情很接近,但它在销毁bean后抛出事件。我认为它与applicationcontext的close()方法一起提供。所以它不适合我的需要

有什么想法吗

问候


Ali

您可以使用抽象应用程序上下文类的registerShutDownHook()方法。有关更多详细信息,请查看

更新

然后,您应该在方法的顶部尝试@PreDestroy注释,当spring上下文即将破坏时,您希望在该方法上运行某些东西


希望这对你有帮助。干杯。

创建一个实现SmartLifecycle的bean,getPhase返回Integer.MAX\u值。 它的stop()方法将在任何其他stop或destroy方法之前执行。 你可以在那里清理LivingBean中的所有资源



    @Component
    public class Terminator implements SmartLifecycle {

        private boolean started = true;

        @Override
        public void stop() {
            // CLEANUP CODE
        }
        @Override
        public void stop(Runnable callback) {
            stop();
            callback.run();
        }

        @Override
        public int getPhase() {
            return Integer.MAX_VALUE;
        }
        @Override
        public boolean isAutoStartup() {
            return true;
        }
        @Override
        public boolean isRunning() {
            return started;
        }

    }

出于好奇,
ClosedContextEvent
现在上下文中没有活动bean,那么,您对实现什么感兴趣?这不正是你所需要的吗?它在处理过程的一开始就开始燃烧。例如,在context.close()的开头。我想在它的结尾,请再次阅读我提供的链接。这正是你所需要的。有没有合适的样品?因为,我所看到的示例没有提供链接方法。有这样的基本用法示例吗?请查看下面的链接。我正在寻找一个入口点,以便在spring上下文即将被破坏时最终运行一些东西。这个示例不是这样的,它们都是基于bean的解决方案,伙计,我想我需要覆盖spring的上下文处理机制。我根据属性解决了它,但这当然不是一个好的解决方案。我还在找一个新的