77

我有一个使用 Intellij IDE 运行良好的 Spring Boot 应用程序。即,我启动了具有委托给 SpringApplication.run 的主要方法的应用程序类。除了热插拔,一切都很好。当我更改源时,我被迫重新启动应用程序。即使我在调试模式下启动应用程序,我也看不到热插拔工作。我可以看到 Intellij 的调试设置启用了热插拔。

我的观察表明,当我运行 springboot 应用程序时,使用的类路径是我的

/projects/MyProject/类/生产/ ....

当我更改代码时,下面的文件classes/production没有得到更新。Intellij IDE 编译文件但不更新 classes/production 目录。如何使用 IntelliJ IDE 进行热插拔以进行 spring-boot?

4

8 回答 8

110

使用 devTools 的解决方案有效:

1 - 将开发工具添加到您的项目中

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
</dependency>

2-启用自动构建

打开Settings --> Build-Execution-Deployment --> Compiler 并启用:

Build Project Automatically.

3- 更新 compiler.automake.allow.when.app.running 的值

按下ctrl+shift+A并搜索registry。在注册表中,启用:

compiler.automake.allow.when.app.running

希望能帮助到你 !


参考 :

于 2017-05-21T09:52:36.123 回答
36

找出了根本原因。这与 Spring-boot 无关。在更改我的 groovy 源文件时,文件没有自动编译。

要重新编译更改的文件并交换它们:

  • Ctrl+Shift+F9在 Windows 上
  • Cmd+Shift+F9在 Mac 上
于 2014-04-18T13:44:51.137 回答
28

第 1 步:添加开发人员工具依赖项

马文。

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <optional>true</optional>
    </dependency>
</dependencies>

摇篮。

dependencies {
    compile("org.springframework.boot:spring-boot-devtools")
}

第 2 步:转到文件 | 设置 | 构建、执行、部署 | 编译器

启用自动构建项目&应用&确定

在此处输入图像描述

第 3 步:按快捷键Ctrl+Shift+A & 搜索注册表关键字 & 按 Enter

在此处输入图像描述

启用complier.automake.allow.when.app.running并单击关闭按钮

在此处输入图像描述

第 4 步:在您喜欢的 Web 浏览器上禁用缓存

在此处输入图像描述

第5步:完成!!!

在 YouTube 上观看解决方案

解决方案

于 2018-08-29T06:28:02.880 回答
13

在我的情况下,即使添加了 Spring Boot 开发工具并自动检查构建项目,它也无法正常工作。缺少的是:

  1. 转到项目运行配置。

  2. 将“更新”操作和“帧停用”都设置为“更新类和资源”。它就像一个魅力。

在此处输入图像描述

于 2018-05-13T04:47:01.450 回答
9

使用弹簧加载。它适用于 bean 重新加载。它是 JRebel 的免费替代品。

另一种方法是使用DCEVMhotswapagent

于 2014-06-27T08:29:44.127 回答
5

我也注意到了同样的问题。我在 Intellij 13.1.1 上。并让它热交换改变的类。我必须在调试模式下运行应用程序,然后在更改类后,手动选择“运行->重新加载更改的类”。

我还将调试器设置为热插拔,如http://www.jetbrains.com/idea/webhelp/reloading-classes.html中所示,但似乎不起作用。

无论如何,至少手动“运行->重新加载更改的类”菜单有效。

于 2014-04-18T17:52:05.597 回答
2

对于多个更改,请使用“编译并重新加载文件”(首先添加“spring-boot-devtools”)。双击“Shift”以在 Mac 中显示图表。

或者尝试我还没有尝试过的弹簧加载。但似乎它可以工作。 在此处输入图像描述

于 2021-01-16T07:37:17.990 回答
0

您可以使用以下任一方法自动重新加载 Thymeleaf 模板:

  1. Spring Boot 开发工具
  2. 更改 Thymeleaf 模板路径
  3. Gulp 手表

我推荐Gulp 手表,因为它更容易设置并且效果很好:

var gulp = require('gulp'), 
watch = require('gulp-watch');

gulp.task('watch', function () {
    return watch('src/main/resources/**/*.*', () => {
            gulp.src('src/main/resources/**')
                //replace with build/resources/main/ for netBeans
                .pipe(gulp.dest('out/production/resources/')); 
    });
});

gulp.task('default', ['watch']);

现在在终端中输入以下命令来启动 gulp watch:

$ gulp 
//OR
$ gulp watch

我写了一篇关于在 IntelliJ IDE 中自动重新加载 Thymeleaf 模板而不重新启动的博客文章。

于 2019-05-01T20:11:57.123 回答