如何优雅的停止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;@RestControllerpublicclassShutDownControllerimplementsApplicationContextAware{privateApplicationContext context;@PostMapping("/shutDownContext")publicString shutDownContext() {ConfigurableApplicationContext ctx = (ConfigurableApplicationContext) context;ctx.close();return"context is shutdown";}@GetMapping("/")publicString getIndex() {return"OK";}@Overridepublicvoid setApplicationContext(ApplicationContext applicationContext) throwsBeansException{context = applicationContext;}}
好了 , SpringBoot的优雅关闭方法也都实现好了 , 也有同学问 , 如何暴力停止呢 , 简单 , 直接kill -9 相应的PID即可 。
总结一下:【如何优雅的停止SpringBoot服务】以上这几种方法实现的话比较简单 , 但是真实工作中还需要考虑的点还很多 , 比如需要保护暴露的点不被别人利用 , 一般要加一些防火墙 , 或者只在内网使用 , 保证程序安全 。 整编:微信公众号 , 搜云库技术团队 , ID:souyunku
在真实的工作中的时候第三种比较常用 , 程序中一般使用内存队列或线程池的时候最好要优雅的关机 , 将内存队列没有处理的保存起来或线程池中没处理完的程序处理完 。 但是因为停机的时候比较快 , 所以停服务的时候最好不要处理大量的数据操作 , 这样会影响程序停止 。
原文链接:
- 智能手机市场|华为再拿第一!27%的份额领跑全行业,苹果8%排在第四名!
- 会员|美容院使用会员管理软件给顾客更好的消费体验!
- 行业|现在行业内客服托管费用是怎么算的
- 人民币|天猫国际新增“服务大类”,知舟集团提醒入驻这些类目的要注意
- 国外|坐拥77件专利,打破国外的垄断,造出中国最先进的家电芯片
- 技术|做“视频”绿厂是专业的,这项技术获人民日报评论点赞
- 面临|“熟悉的陌生人”不该被边缘化
- 中国|浅谈5G移动通信技术的前世和今生
- 页面|如何简单、快速制作流程图?上班族的画图技巧get
- 桌面|日常使用的软件及网站分享 篇一:几个动态壁纸软件和静态壁纸网站:助你美化你的桌面