Intellij Idea Springboot -无需重启Tomcat Server即可更新类

vyswwuz2  于 2023-10-15  发布在  Spring
关注(0)|答案(1)|浏览(143)

在我的Sping Boot (2.6.4)项目中,我想知道是否可以对类(例如实体,DTO或控制器)进行更改,并在无需重新启动整个应用程序的情况下重新加载更改后的类(like here
我的环境包括:IDE:Intellij Idea 2023 Ultimate Build Tool:Gradle
我在Intellij中启用了以下选项:

  • 设置->构建、执行、部署->编译器:自动生成项目(已勾选)
  • 启用选项'允许自动使启动,即使开发的应用程序目前正在运行'在设置->高级设置下编译器

在Gradle中,我尝试了两种选择:

developmentOnly 'org.springframework.boot:spring-boot-devtools'
and
compileOnly 'org.springframework.boot:spring-boot-devtools'

我正在使用工具菜单上的绿色图标在Intellij中创建项目。
然后,我尝试在Debug中运行项目时对Dto类进行更改,例如:

@NoArgsConstructor
@AllArgsConstructor
@Getter
@Setter
public class CarDto {
    @JsonProperty("carId")
    private Long carId;
    @JsonProperty("name")
    private String name;
}

通过注解掉这两行:

//@JsonProperty("name")
//private String name;

但是Intellij中的终端上没有指示它已经检测到更改并重新加载更改的类。

更新

另一个更新的post声明它由Intellij中的运行配置控制。
它指出:
1.安装Sping Boot Developer tools;
1.将Run Configuration中的On Update Action设置为Hot swap classes and update trigger file if failed

  1. On Frame deactivation具有类“Update Classes and Resources”

**问:**我如何让实时重新加载工作-似乎有几个不同的指令集。

如果需要的话,我可以发布更多的build.gradle

eiee3dmh

eiee3dmh1#

您只是在调试时更改类,还是计划在运行中的服务器上更新应用程序。在Sping Boot 发明的10多年前,Intellij就已经有了热重载,所以我个人不使用spring-boot-devtools,只是在调试器中启动应用程序,然后执行shit+F9(旧热键)来重新编译和重载JVM的类。

相关问题