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中的ansitrue时,它继续,否则,应用程序应该关闭,我们可以在创建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的应用启动与关闭的主要内容,如果未能解决你的问题,请参考以下文章

启动后立即关闭Spring Boot应用程序

Spring Boot 无法正确启动 [关闭]

如何在不启动 HikariPool 关闭的情况下使用 Hikari 数据源运行 Spring Boot 应用程序

Spring Boot Maven 插件 - spring-boot:run 和优雅关闭

如何让世界各地的每个人都可以访问在我的计算机上启动的 Spring Boot 应用程序? [关闭]

如何提高 Spring Boot 应用的启动速度