java如何在spring boot中启动时关闭应用程序
我有一个关于spring boot
中启动的问题,如何在启动期间关闭应用程序,例如,我有以下问题
application.yml
:
ansi:
true
我有以下@Configuration
类:
@Configuration
class AppConfig {
@Value('${ansi}')
String ansi;
@Bean
getAnsi() {
if(ansi.equals("true")) {
Ansi ansiObj = new Ansi();
ansiObj.ansi = ansi;
return ansiObj;
}
}
}
class Ansi {
String ansi;
}
当application.yml
中的ansi
是true
时,它将继续,否则,应用程序应该关闭,我们可以在bean创建期间关闭应用程序吗?这是一种好的做法吗?有什么好办法处理这个问题吗
# 1 楼答案
如果一个bean抛出一个异常,那么Spring将不会继续,进程将结束
我不能说我曾经有过它的用例,但我不会说这是必要的坏习惯。在这个有限的真与假的例子中,这似乎有点不寻常。如果您需要对属性进行约束,例如X<;十,
# 2 楼答案
我们有很多关闭spring boot应用程序的选项:
Shutdown rest endpoint-将以下属性添加到应用程序中。属性并在请求后激发
curl -X POST localhost:port/actuator/shutdown
您还可以调用适当的方法来关闭应用程序:
ConfigurableApplicationContext
对象调用方法close()
(它将关闭应用程序上下文)SpringApplication.exit(ctx, () -> 0);
有关更多详细信息,请查看this文章