在成功执行后通过代码停止Spring Boot,可以使用Spring Boot Actuator提供的Endpoint来完成。具体步骤如下:
spring-boot-starter-actuator
依赖:<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
shutdown
端点:management.endpoints.web.exposure.include=health,shutdown
ApplicationContext
对象,并定义一个用于关闭应用的API接口:import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.context.ApplicationContext;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/api")
public class ShutdownController {
private final ApplicationContext context;
@Autowired
public ShutdownController(ApplicationContext context) {
this.context = context;
}
@PostMapping("/shutdown")
public String shutdown() {
new Thread(() -> {
try {
Thread.sleep(500); // 延时500毫秒,确保响应先返回
SpringApplication.exit(context, () -> 0); // 关闭应用
} catch (InterruptedException e) {
e.printStackTrace();
}
}).start();
return "Application shutting down...";
}
}
/api/shutdown
接口,即可通过代码停止Spring Boot应用。需要注意的是,使用shutdown
端点关闭应用是一种非常严重的操作,应该谨慎使用,避免误操作。此外,为了保证安全性,应该对该接口进行访问权限的控制,例如添加身份验证或IP限制等措施。
领取专属 10元无门槛券
手把手带您无忧上云