SpringBoot自动重启的两种方法

 更新时间:2023年12月08日 09:17:54   作者:Fisher3652  
我们在项目开发阶段,可能经常会修改代码,修改完后就要重启Spring Boot,本文主要介绍了SpringBoot自动重启的两种方法,具有一定的参考价值,感兴趣的可以了解一下

方法一:使用SpringCloud RestartEndpoint

  • 使用的jar
    implementation 'org.springframework.boot:spring-boot-starter-actuator'
    implementation 'org.springframework.cloud:spring-cloud-starter-config:3.0.7'
  • 在application.properties添加配置
management.endpoint.restart.enabled=true
spring.cloud.config.enabled=false
  • 重启方法的Controller
import javax.annotation.Resource;

import org.springframework.cloud.context.restart.RestartEndpoint;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/restart")
public class RestartController {

    @Resource
    private RestartEndpoint restartEndpoint;

    @GetMapping("/restartApplication")
    public void restartApplication() {
        restartEndpoint.restart();
    }

}

方法二:重新创建ApplicationContext上下文

  • 启动类
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;

@SpringBootApplication
public class Application {

    public static ConfigurableApplicationContext context;

    public static void main(String[] args) {
        context = SpringApplication.run(Application.class);
    }

}

  • 重启方法的Controller
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.SpringApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import lombok.extern.slf4j.Slf4j;

@Slf4j
@RestController
@RequestMapping("/restart")
public class RestartController {

    private static void restart() {
        ApplicationArguments args = Application.context.getBean(ApplicationArguments.class);
        Thread thread = new Thread(() -> {
            log.info("springboot restart...");
            Application.context.close();
            Application.context = SpringApplication.run(Application.class, args.getSourceArgs());
        });
        // 设置为用户线程,不是守护线程
        thread.setDaemon(false);
        thread.start();
    }
}

到此这篇关于SpringBoot自动重启的两种方法的文章就介绍到这了,更多相关SpringBoot自动重启内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

相关文章

  • Springboot集成JSR303参数校验的方法实现

    Springboot集成JSR303参数校验的方法实现

    这篇文章主要介绍了Springboot集成JSR303参数校验的方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • 使用EasyPoi实现百万级数据导出的性能优化方案

    使用EasyPoi实现百万级数据导出的性能优化方案

    Easypoi 功能如同名字easy,主打的功能就是容易,让一个没见接触过poi的人员 就可以方便的写出Excel导出,Excel模板导出,Excel导入,本文给大家介绍了使用EasyPoi实现百万级数据导出的性能优化方案,需要的朋友可以参考下
    2025-08-08
  • SpringBoot2零基础到精通之profile功能与自定义starter

    SpringBoot2零基础到精通之profile功能与自定义starter

    SpringBoot是一种整合Spring技术栈的方式(或者说是框架),同时也是简化Spring的一种快速开发的脚手架,本篇让我们一起学习profile功能与自定义starter
    2022-03-03
  • 详解Spring Cloud Zuul重试机制探秘

    详解Spring Cloud Zuul重试机制探秘

    本篇文章主要介绍了详解Spring Cloud Zuul重试机制探秘,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11
  • SpringBoot Maven 项目 pom 中的 plugin 插件用法小结

    SpringBoot Maven 项目 pom 中的 plugin&n

    本文详细介绍了Spring Boot Maven项目打包成jar文件时使用的spring-boot-maven-plugin插件,深入探讨了插件的配置元素,结合实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧
    2025-01-01
  • Spring Boot 优雅停机原理详解

    Spring Boot 优雅停机原理详解

    这篇文章主要为大家介绍了Spring Boot 优雅停机原理详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • MyBatis-Plus逻辑删除实现过程

    MyBatis-Plus逻辑删除实现过程

    本文介绍了MyBatis-Plus如何实现逻辑删除功能,包括自动填充字段、配置与实现步骤、常见应用场景,并展示了如何使用remove方法进行逻辑删除,逻辑删除通过修改字段值来标记数据为删除状态,保留数据历史记录,避免数据丢失
    2025-12-12
  • Java 线程相关总结

    Java 线程相关总结

    这篇文章主要介绍了Java 线程的相关资料,帮助大家更好的理解和学习使用Java,感兴趣的朋友可以了解下
    2021-02-02
  • Java设计图形与多媒体处理

    Java设计图形与多媒体处理

    本文主要介绍了Java的图形设计以及多媒体处理,源码也做了详细的注释,对于初学者应该不难。详细请看下文
    2015-09-09
  • JAVA中的基本数据类型

    JAVA中的基本数据类型

    本文主要介绍了JAVA中的基本数据类型。具有很好的参考价值,下面跟着小编一起来看下吧
    2017-02-02

最新评论