使用Intellij IDE进行spring boot hotswap

sum*_*n j 54 intellij-idea hotswap spring-boot

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

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

/projects/MyProject/classes/production/....

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

Rad*_*FID 87

使用devTools的解决方案有效:

1 - 将devtools添加到项目中

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
</dependency>
Run Code Online (Sandbox Code Playgroud)

2-启用自动构建

打开设置 - >构建 - 执行 - 部署 - >编译器并启用:

Build Project Automatically.
Run Code Online (Sandbox Code Playgroud)

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

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

compiler.automake.allow.when.app.running
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你 !


参考文献:

  • 在 2021.2 中,而不是步骤 3 启用 *设置 --&gt; 高级设置 --&gt; 即使开发的应用程序当前正在运行,也允许自动启动* (12认同)
  • 这不仅会重新启动SpringBoot吗,就像手动执行一样?重启期间需要相同的时间吗? (4认同)
  • 每次更改任何文件时,`compiler.automake.allow.when.app.running`都会重新启动.花了太长时间 (3认同)
  • 该应用程序仅在我关闭文件时重新启动,并且所有春季启动都会重新启动,这不是真正的热重载......我错过了什么吗?我用的是idea Ultimate (2认同)

sum*_*n j 22

找出根本原因.这与Spring-boot无关.在更改我的常规源文件时,文件未自动编译.

要重新编译已更改的文件并进行交换:

  • Ctrl+Shift+F9 在Windows上
  • Cmd+Shift+F9 在Mac上


小智 10

就我而言,即使在添加 Spring Boot 开发工具并自动检查构建项目后,它也无法正常工作。缺少的是这个:

  1. 转到项目运行配置。

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

在此处输入图片说明

  • @RichArt 我也遇到了同样的问题。不幸的是,所讨论的运行配置是针对 intellij spring-boot 支持的 - 仅在终极版本中可用。 (3认同)
  • 这正是我写评论的原因:单击“运行”-&gt;“编辑配置”时,我在“更新”操作和“帧停用”选项上看不到任何内容。(我在 Intellij 2018.1.6) (2认同)

she*_*hub 10

步骤1:添加开发人员工具

Maven。

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <optional>true</optional>
    </dependency>
</dependencies>
Run Code Online (Sandbox Code Playgroud)

摇篮。

dependencies {
    compile("org.springframework.boot:spring-boot-devtools")
}
Run Code Online (Sandbox Code Playgroud)

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

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

在此处输入图片说明

步骤3:按快捷键Ctrl + Shift + A和搜索注册表关键字,然后按Enter

在此处输入图片说明

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

在此处输入图片说明

步骤4:在您喜欢的网络浏览器上禁用缓存

在此处输入图片说明

步骤5:完成!!!

在YouTube上观看解决方案

解

  • 此外,在 2021.2 版本之后,complier.automake.allow.when.app.running 选项已移至高级设置。首选项 -&gt; 高级设置 -&gt; 编译器 -&gt; 允许 Automake ..... 等等... (3认同)

Mic*_*d a 9

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

另一种方法是使用DCEVMhotswapagent


小智 5

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

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

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


cod*_*uss 5

@Sameer Khanal 的回答有效,但由于已经过去了很长时间,我提供一些澄清

  1. 安装 spring boot devtools 依赖项(https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-devtools

  2. 修改您的运行选项 编辑运行配置

  3. On 'Update' action更新 和的选项,On frame deactivation如下所示: 在此输入图像描述

  4. 单击“确定”即可完成

希望有帮助