侧边栏壁纸
博主头像
昊天的个人博客 博主等级

行动起来,活在当下

  • 累计撰写 65 篇文章
  • 累计创建 72 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

SpringBoot通过代码自动重启项目重载配置

昊天
2021-05-11 / 0 评论 / 0 点赞 / 2 阅读 / 0 字

近期有一个需求提供一个系统安装的导航界面,所以需要动态设置一些配置文件的项,比如数据库的连接等。 所以需要自动重启一下项目来达到重载配置的效果。

启动类做如下操作 run方法返回一个 ConfigurableApplicationContext ,也就是上下文对象,上下文对象中有一个 close() 方法。 用另一个线程来重新启动项目就可以了。


    private static ConfigurableApplicationContext context;
    public static void main(String[] args) {
        idGeneratorConfig();
        context=SpringApplication.run(CloudApplication.class, args);
    }

    public static void restartApplication() {
        ApplicationArguments args = context.getBean(ApplicationArguments.class);

        Thread thread = new Thread(() -> {
            context.close();
            try {
                Thread.sleep(5000L);
            } catch (InterruptedException e) {
                Thread.currentThread().interrupt();
            }
            context = SpringApplication.run(CloudApplication.class, args.getSourceArgs());
        });

        thread.setDaemon(false);
        thread.start();
    }

参考 https://www.sxkawzp.cn/archives/springbootinapplicationrestart

0

评论区