Shutdown SpringBoot App

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Shutdown SpringBoot App相关的知识,希望对你有一定的参考价值。

参考技术A Shutdown SpringBoot App

Spring Boot使用ApplicationContext来创建,初始化和销毁所用的bean。本文将会讲解如何shut down一个spring boot应用程序。

Spring Boot actuator自带了shutdown的endpoint。首先我们添加pom依赖:

接下来我们需要开启shutdown的配置:

上面的配置对外暴露了 /shutdown 接口。我们可以直接这样调用:

我们也可以直接调用Application Context的close() 方法来关闭Application Context。

为了验证App是否被关闭,我们可以在TerminateBean中添加@PreDestroy来监测App是否被关闭:

这是程序的输出:

还有一种办法就是暴露close接口如下所示:

这样我们就可以通过/shutdownContext接口来关闭ApplicationContext。

上篇文章我们讲过可以通过实现ExitCodeGenerator 接口来返回特定的exit code:

熟悉shell的同学都知道如果想在外部kill一个程序,需要知道该App的pid,Spring Boot也可以很方便的生成pid:

上面的程序将会在./bin/shutdown.pid生成应用程序的pid,供shell使用。

我们可以这样使用:

本文的例子可以参考 https://github.com/ddean2009/learn-springboot2/tree/master/springboot-shutdown

更多教程请参考 flydean的博客

wpf(Application 如何创建一个事件,及其Application相关的属性)

1.如何关闭wpf程序。应用程序的关闭只有调用其shutdown方法才可以。shutdown有三种属性。OnLastWindowClose,OnMainWindowClose,OnExplicitShutdown

1)通过在App.xaml中直接设置。shutdown=“OnExplicitShutdown”;

2)第二种方式:删除App.xaml文件,自己创建一个App.cs类,在main方法中:

(建立Application对象,建立win窗体对象略)

app.shutdown=shutdownmodel.OnLastWindowClose;

app.run(win);

2.Application还有很多属性。

mainwindow 获取或者设置属性

3.这么添加一个Application事件:这里只介绍两种方式

一.在App.xaml的节点上右键,属性找到其所有的属性,在你需要的属性上绑定事件。结果如下图所示

然后在其App.xaml.cs文件中会出现这样的代码

然后在(*.csproj)这个项目文件中需要把<page>改为<applicationdefination>标签。

二.第二种方式是通过app.cs类来实现Application事件

win.show()显示窗体。

app.run(win)启动窗体

app.exit+=Application_exit;将Application方法委托给exit

void Application_exit(Objiect sender,ExitEventArgs e){}//这里的ExitEventArgs因事件的不同可能不同。sender代表对象,e代表触发的事件的一些参数。

 

以上是关于Shutdown SpringBoot App的主要内容,如果未能解决你的问题,请参考以下文章

关于运行springboot时报Unregistering JMX-exposed beans on shutdown的解决方案

springboot线程池关闭

springboot 发布tomcat(war包)

springboot 发布tomcat(war包)

Shutdown Hook 中的日志去哪了?log4j2 shutdown hook 机制探究

Channel shutdown: channel error; protocol method: #method channel.close (rep