Spring Boot的应用启动与关闭
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Boot的应用启动与关闭相关的知识,希望对你有一定的参考价值。
参考技术A Spring Boot应用可以打成jar包,其中内嵌tomcat,因此可以直接启动使用。但是在Spring Boot应用启动之前,首先需要进行打包,本文讲述的是Maven工程的打包,打包需要的前提条件(pom.xml文件中的内容)是:打包命令为:
或在eclipse中运行 run -> Maven build... ,在Goals中填写 clean package -Dmaven.test.skip=true ,运行,打包完成。
Spring Boot的启动命令为:
Spring Boot应用关闭的前提条件是 POM.xml 添加以下内容:
application.properties 中添加:
关闭命令为:
如果要配置路径,需要在 application.properties 中添加 management.context-path=/manage ,则关闭命令变为 curl -X POST host:port/manage/shutdown 。
如果在关闭时需要安全验证,则在 pom.xml 文件中添加:
application.properties 中添加:
关闭命令为:
如何在spring boot启动期间关闭应用程序
【中文标题】如何在spring boot启动期间关闭应用程序【英文标题】:how to close the application during startup in spring boot 【发布时间】:2019-04-11 19:42:29 【问题描述】:我有一个关于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的过程中关闭应用程序吗?这是一个好习惯吗?有什么好的方法可以处理吗?
【问题讨论】:
你可能想检查一下:***.com/questions/22944144/… 【参考方案1】:我们有很多选项可以关闭 spring-boot 应用程序:
关闭休息端点 - 将以下属性添加到您的 application.properties 并触发以下请求 curl -X POST localhost:port/actuator/shutdown
management.endpoints.web.exposure.include=*
management.endpoint.shutdown.enabled=true
endpoints.shutdown.enabled=true
你也可以调用合适的方法来关闭应用程序:
通过在ConfigurableApplicationContext
对象上调用方法close()
(它将关闭应用程序上下文)
通过将退出代码传递给方法SpringApplication.exit(ctx, () -> 0);
请查看this 文章了解更多详情。
【讨论】:
【参考方案2】:如果 bean 抛出异常,则 Spring 将不会继续,进程将结束。
if(ansi.equals("true"))
Ansi ansiObj = new Ansi();
ansiObj.ansi = ansi;
return ansiObj;
else
throw new IllegalArgumentException("reason");
我不能说我曾经有过它的用例,但我不会说这是必要的坏习惯。在这个有限的真假例子中,似乎有点不寻常。如果您需要对属性进行约束,例如X
【讨论】:
以上是关于Spring Boot的应用启动与关闭的主要内容,如果未能解决你的问题,请参考以下文章
如何在不启动 HikariPool 关闭的情况下使用 Hikari 数据源运行 Spring Boot 应用程序
Spring Boot Maven 插件 - spring-boot:run 和优雅关闭