前端VUE调用API实现重启后台

第一种方法

(平常前后端分离时可以使用,但项目打包成jar包后,使用的devtools依赖导致启动jar包失败)

前端创建一个按钮,调用该api即可。

<el-button size="medium" round type="primary" icon="el-icon-refresh" style="color: black" @click="restart">重新启动服务器
</el-button>

前端methods方法

restart(){
  this.$http.post('/restart').then(res => {
    if(res.data){
      console.log(res.data)
      this.$message({
        message:'正在重启服务!',
        type: 'success',
        offset: 350,
        showClose: true
      })
    }
    else {
      this.$message({
        message:'重启服务失败!',
        type: 'success',
        offset: 350,
        showClose: true
      })
    }
  })
}

后端代码

@CrossOrigin
@PostMapping(value="api/restart")
@ResponseBody
public boolean restart() {
    Restarter restarter = Restarter.getInstance();
    restarter.restart(new FailureHandler() {
        public Outcome handle(Throwable failure) {
            System.out.println("重启失败");
            return Outcome.ABORT;
        }
    });
    return  true;
}

导入依赖

org.springframework.boot
spring-boot-devtools
true

第二种方法

亲测可行,参考连接
https://duoduokou.com/java/50894250288586716926.html

这是我的后台启动类,在里面加了个重启的方法

package com.example.demo;

import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;


@SpringBootApplication(scanBasePackages = "com.example.demo")
public class Demo1Application {
    private static ConfigurableApplicationContext context;

    public static void main(String[] args) {
        context = SpringApplication.run(Demo1Application.class, args);
    }
    public static void restart() {
        ApplicationArguments args = context.getBean(ApplicationArguments.class);

        Thread thread = new Thread(() -> {
            context.close();
            context = SpringApplication.run(Demo1Application.class, String.valueOf(args));
        });
        thread.setDaemon(false);
        thread.start();
    }
}

编写接口

@Controller
public class RestartController {

    @CrossOrigin
    @PostMapping(value="api/restart")
    @ResponseBody
    public boolean restart() {
        DemoApplication.restart();
        return true;
    }
}
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

躺尸研究员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值