环境:Spring Boot3.2.5
1. 简介
本篇文章,我将详细介绍如何以编程方式重启 Spring Boot 应用程序。在以下几种情况下,重启应用程序会带来非常方便:
修改了配置文件(application.yml)
运行时更改当前激活的配置文件
重新初始化应用程序上下文
接下来,让我们来实现 Spring Boot 应用程序重启的不同方法。
2. 实战案例
2.1 创建新的Spring上下文
我们可以通过关闭应用程序上下文并从头开始创建一个新的上下文来重启应用程序。此种方法非常简单,不过我们还是要注意一些细节才能使其有效,比如:启动程序的参数。
public class Application {
private static ConfigurableApplicationContext context ;
public static void main(String[] args) {
context = SpringApplication.run(Application.class, args) ;
}
public static void restart() {
// 既然是重启,所以之前启动的参数还必须要保证一致
ApplicationArguments args = context.getBean(ApplicationArguments.class);
Thread thread = new Thread(() -> {
try {
// 模拟关闭前要执行的动作
TimeUnit.SECONDS.sleep(3) ;
} catch (InterruptedException e) {}
// 关闭当前容器
context.close() ;
// 重新启动程序
context = SpringApplication.run(Application.class, args.getSourceArgs()) ;
});
thread.setDaemon(false) ;
thread.start() ;
}
}
定义HTTP接口,通过接口调用
@GetMapping("")
public Object restart() {
Application.restart() ;
return "success, 应用将在3s后自动重启" ;
}
通过上面的程序,我们就能够实现应用的重启。
2.2 通过事件机制