0.声明
缘由:没有学过或者没有经历SpringBoot的Application运行机制的话,一定会好奇,博主为啥会写一篇关闭开启的博文,是不是好幼稚?(/o(╥﹏╥)o),待我娓娓道来......为什么需要关闭Application?因为它每运行一次就占用一个端口啊!!!!(殊不知,在关闭不掉这端口的时候是多痛苦) 待下一次应用再次调试启动时,就端口冲突了....而Application开启后又极其难关闭,用任务管理器是杀不死这个Web Application小强的。在此之前,只能通过关闭IDE的方式关闭,而查询网友文献,均没有具体说清楚具体如何操作,都是把文章抄过来抄过去,连一个字都没有变,这怕也是国内知识(保护意识不强,版权意识不强所导致的)抄袭成风的劣根性吧!!!!!!
引用文献
springboot项目的优雅关闭方式:https://blog.****.net/XlxfyzsFdblj/article/details/82054744
环境
Eclipse+Chrome+Postman(网络请求调试的Chrome插件)
1.开启运行Application测试类【主流/推荐】
package com.edu.xhu.jobspider.examples.controller; /**
* SpringBoot Web测试运行类
* @author Johnny Zen
* @createTime 2018年9月24日
* @description 创建步骤:
* 1.先创建maven web项目
* 2.继承parent,增加springboot-web依赖,配置打包标签
* 3.配置application.yml
* 4.创建运行文件App.java
* 5.用java -jar 文件.jar 进行运行
*/ import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; @EnableAutoConfiguration
//@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
@RestController
@RequestMapping("/demo01")
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
} @RequestMapping("/hello")
public String hello(){
return "hello-SpringBootApp!!";
}
}
Step1:Eclipse:[App.Java]>右键>Run As>Java Application
Step2:Chrome:http://localhost:8080/demo/demo01/hello
2.安全关闭Application
【不推荐方法】关闭正在开发环境的IDE(Eg:Eclipse)
【推荐方法】
Step1:Maven中添加依赖项
<!-- actuator(为关闭application) -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
Step2:Application.yml增加配置
# 关闭Application
endpoints:
shutdown:
enabled: true #启用shutdown
sensitive: false #禁用密码验证
Step3:Postman 运行shutdown命令请求:http://localhost:8080/demo/shutdown