menu 李昊天的个人博客
SpringBoot通过代码自动重启项目重载配置
825 浏览 | 2021-05-11 | 分类:项目问题解决汇总,SpringBoot | 标签:项目问题解决,SpringBoot

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

启动类做如下操作
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

知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议

发表评论

email
web

全部评论 (暂无评论)

info 还没有任何评论,你来说两句呐!