广告
返回顶部
首页 > 资讯 > 精选 >Springboot中怎么停止服务
  • 416
分享到

Springboot中怎么停止服务

2023-06-16 16:06:04 416人浏览 八月长安
摘要

这篇文章给大家介绍SpringBoot中怎么停止服务,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。第一种就是springboot提供的actuator的功能,它可以执行shutdown, health, info等,默

这篇文章给大家介绍SpringBoot中怎么停止服务,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

第一种就是springboot提供的actuator的功能,它可以执行shutdown, health, info等,默认情况下,actuator的shutdown是disable的,我们需要打开它。首先引入acturator的Maven依赖。 

<dependency>         <groupId>org.springframework.boot</groupId>         <artifactId>spring-boot-starter-actuator</artifactId>     </dependency>

然后将shutdown节点打开,也将/actuator/shutdown暴露WEB访问也设置上,除了shutdown之外还有health, info的web访问都打开的话将management.endpoints.web.exposure.include=*就可以。将如下配置设置到application.properties里边。设置一下服务的端口号为3333。

server.port=3333  management.endpoint.shutdown.enabled=true  management.endpoints.web.exposure.include=shutdown

接下来,咱们创建一个springboot工程,然后设置一个bean对象,配置上PreDestroy方法。这样在停止的时候会打印语句。bean的整个生命周期分为创建、初始化、销毁,当最后关闭的时候会执行销毁操作。在销毁的方法中执行一条输出日志

package com.hqs.springboot.shutdowndemo.bean;  import javax.annotation.PreDestroy;    public class TerminateBean {      @PreDestroy      public void preDestroy() {          System.out.println("TerminalBean is destroyed");      }  }

做一个configuration,然后提供一个获取bean的方法,这样该bean对象会被初始化。

package com.hqs.springboot.shutdowndemo.config;  import com.hqs.springboot.shutdowndemo.bean.TerminateBean;  import org.springframework.context.annotation.Bean;  import org.springframework.context.annotation.Configuration;    @Configuration  public class ShutDownConfig {      @Bean      public TerminateBean getTerminateBean() {          return new TerminateBean();      }  }

在启动类里边输出一个启动日志,当工程启动的时候,会看到启动的输出,接下来咱们执行停止命令。

curl -X POST Http://localhost:3333/actuator/shutdown

以下日志可以输出启动时的日志打印和停止时的日志打印,同时程序已经停止。是不是比较神奇。

Springboot中怎么停止服务

第二种方法也比较简单,获取程序启动时候的context,然后关闭主程序启动时的context。这样程序在关闭的时候也会调用PreDestroy注解。如下方法在程序启动十秒后进行关闭。

          ConfigurableApplicationContext ctx = SpringApplication.run(ShutdowndemoApplication.class, args);          try {              TimeUnit.SECONDS.sleep(10);          } catch (InterruptedException e) {              e.printStackTrace();          }          ctx.close();

第三种方法,在springboot启动的时候将进程号写入一个app.pid文件,生成的路径是可以指定的,可以通过命令 cat /Users/huangqingshi/app.id | xargs kill 命令直接停止服务,这个时候bean对象的PreDestroy方法也会调用的。这种方法大家使用的比较普遍。写一个start.sh用于启动springboot程序,然后写一个停止程序将服务停止。

          SpringApplication application = new SpringApplication(ShutdowndemoApplication.class);          application.addListeners(new ApplicationPidFileWriter("/Users/huangqingshi/app.pid"));          application.run();

第四种方法,通过调用一个SpringApplication.exit()方法也可以退出程序,同时将生成一个退出码,这个退出码可以传递给所有的context。

这个就是一个JVM的钩子,通过调用这个方法的话会把所有PreDestroy的方法执行并停止,并且传递给具体的退出码给所有Context。通过调用System.exit(exitCode)可以将这个错误码也传给JVM。程序执行完后最后会输出:Process finished with exit code 0,给JVM一个SIGNAL。       

         ConfigurableApplicationContext ctx = SpringApplication.run(ShutdowndemoApplication.class, args);         exitApplication(ctx);
public static void exitApplication(ConfigurableApplicationContext context) {        int exitCode = SpringApplication.exit(context, (ExitCodeGenerator) () -> 0);         System.exit(exitCode);    }

Springboot中怎么停止服务

第五种方法,自己写一个Controller,然后将自己写好的Controller获取到程序的context,然后调用自己配置的Controller方法退出程序。

通过调用自己写的/shutDownContext方法关闭程序:curl -X POST http://localhost:3333/shutDownContext。

package com.hqs.springboot.shutdowndemo.controller;  import org.springframework.beans.BeansException;  import org.springframework.context.ApplicationContext;  import org.springframework.context.ApplicationContextAware;  import org.springframework.context.ConfigurableApplicationContext;  import org.springframework.web.bind.annotation.GetMapping;  import org.springframework.web.bind.annotation.PostMapping;  import org.springframework.web.bind.annotation.RestController;    @RestController  public class ShutDownController implements ApplicationContextAware {      private ApplicationContext context;      @PostMapping("/shutDownContext")      public String shutDownContext() {          ConfigurableApplicationContext ctx = (ConfigurableApplicationContext) context;         ctx.close();          return "context is shutdown";      }      @GetMapping("/")      public String getIndex() {          return "OK";      }      @Override      public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {          context = applicationContext;      }  }

关于Springboot中怎么停止服务就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

--结束END--

本文标题: Springboot中怎么停止服务

本文链接: https://www.lsjlt.com/news/284280.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Springboot中怎么停止服务
    这篇文章给大家介绍Springboot中怎么停止服务,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。第一种就是Springboot提供的actuator的功能,它可以执行shutdown, health, info等,默...
    99+
    2023-06-16
  • linux怎么停止服务
    本篇内容介绍了“linux怎么停止服务”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!linux停止服务的命令是“stop”,stop命令能够...
    99+
    2023-06-22
  • 怎么停止mysql服务器
    这篇文章将为大家详细讲解有关怎么停止mysql服务器,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。停止mysql服务器的方法:1、按【win+r】快捷键打开运行窗口;2、...
    99+
    2022-10-18
  • win10怎么停止mysql服务
    在win10系统中停止mysql服务的方法方法一:在win10操作界面中,右键点击“开始”,选择“计算机管理”选项;进入计算机管理页面后,在左侧菜单栏中,点击“服务和应用程序”选项,在下拉中点击“服务”;点击服务后,在右侧的服务列表中,查找...
    99+
    2022-10-20
  • 怎么停止云服务器
    停止云服务器的步骤如下:1. 登录到云服务提供商的控制台或管理面板。2. 在控制台或管理面板中找到云服务器的列表或概览页面。3. 在...
    99+
    2023-09-16
    云服务器
  • Centos中怎么启动或停止SpringBoot项目
    今天小编给大家分享一下Centos中怎么启动或停止SpringBoot项目的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。使用...
    99+
    2023-06-08
  • win10怎么停止mysql服务器
    在win10系统中停止mysql服务器的方法方法一:首先,使用组合键“win+R”运行cmd,进入命令提示符窗口;进入命令提示符窗口后,在命令行中使用net命令即可停止mysql服务器;net stop mysql;方法二:使用组合键“wi...
    99+
    2022-10-14
  • xp停止服务后怎么办
    如果XP操作系统的服务停止运行,可以尝试以下解决方法:1. 重新启动计算机:有时候服务停止运行是由于系统出现问题或者内存不足等原因引...
    99+
    2023-08-31
    xp
  • mongodb集群怎么停止服务
    要停止 MongoDB 集群的服务,你可以按照以下步骤进行操作:1. 登录到运行 MongoDB 集群的主机上。2. 打开终端或命令...
    99+
    2023-09-04
    mongodb
  • 怎么在Linux系统中停止mongodb服务
    在Linux系统中停止mongodb服务的方法:1.打开终端;2.切换到root用户;3.执行命令停止mongodb服务;具体步骤如下:首先,在Linux系统中使用组合键“Ctrl+alt+T”,打开终端;进入到终端页面后,在命令行中切换到...
    99+
    2022-10-08
  • 怎么停止阿里云服务器服务
    如果您停止了阿里云服务器服务,可能会出现以下情况: 系统崩溃:阿里云服务器服务通常会提供一组安全措施,可以保护您的系统不会受到未经授权的访问或攻击。如果您不小心将重要数据放在了阿里云服务器上,则可能会出现系统崩溃的情况,导致数据丢失和其...
    99+
    2023-10-26
    阿里 服务器
  • 阿里云服务器怎么停止服务
    如果您的阿里云服务器因为网络连接故障而停止服务,您可以按照以下步骤进行操作: 检查网络连接状态:确保您的计算机和服务器已经与网络连接正常。 检查网络带宽:确保您的网络带宽足够,可以正常使用。 检查网络配置:确保您的云服务器已正确安装了网...
    99+
    2023-10-26
    阿里 服务器
  • 阿里云服务器怎么停止
    如果您正在使用阿里云的云服务器,停止服务可能会导致您的云服务器的数据被删除或备份到其他云服务器上。下面是一些可能会影响停止服务后的情况的建议: 确认服务器状态:您可能需要查看云服务器的日志或数据库状态来确定服务器的运行状态。确保您的云服...
    99+
    2023-10-26
    阿里 服务器
  • 怎么停止阿里云服务器
    如果您无法停止阿里云服务器,可能有多种原因。以下是一些可能有助于您停止服务器: 断开连接:您可以尝试连接断开来中断网络连接。确保您的计算机和阿里云服务器之间保持正在进行中的连接,并且断开连接会使您无法使用阿里云服务器。 更改配置:如果您...
    99+
    2023-10-26
    阿里 服务器
  • 腾讯云服务器怎么停止
    如果您想停止腾讯云服务器,可以按照以下步骤进行操作: 在您的账户中,选择“服务器设置”,进入服务器设置页面。 在服务器设置页面中,找到“服务”选项。 在服务选项中,找到“停止”选项。 在停止选项中,点击“停止服务器”按钮即可停止服务器。...
    99+
    2023-10-26
    腾讯 服务器
  • windows停止服务是怎么回事
    Windows停止服务是指在Windows操作系统中,某个服务或进程停止运行或被禁用。这可能是由于多种原因引起的,包括以下几种可能情...
    99+
    2023-08-31
    windows
  • 阿里云服务器怎么停止服务了
    如果您的阿里云服务器停止了服务,可以按照以下步骤进行操作: 确保您的阿里云账户处于登录状态:登录您的账户以查看其状态和任务。 查看网络连接状态:检查您的网络连接状态以确保您的服务器运行正常。 检查服务器软件版本:如果您使用的是阿里云的服...
    99+
    2023-10-27
    阿里 服务器
  • 亚马逊服务器停止服务怎么办
    1. 确认服务器停止服务的原因 当你发现亚马逊服务器停止服务时,首先要做的是确认服务器停止服务的原因。这可能是由于服务器故障、网络问题或者是你的账户被暂停等原因导致的。如果是由于服务器故障或网络问题导致的,你可以尝试重新启动服务器或者联系...
    99+
    2023-10-27
    亚马逊 服务器
  • MySQL服务器怎么启动与停止
    这篇文章主要介绍“MySQL服务器怎么启动与停止”,在日常操作中,相信很多人在MySQL服务器怎么启动与停止问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MySQL服务器怎么...
    99+
    2022-10-18
  • 怎么停止电脑上的windows7服务
    小编给大家分享一下怎么停止电脑上的windows7服务,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!首先右键单击【计算机】,选择【管理】在弹出框中点击【服务和应用...
    99+
    2023-06-27
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作