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