在我的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
On Frame deactivation
具有类“Update Classes and Resources”
**问:**我如何让实时重新加载工作-似乎有几个不同的指令集。
如果需要的话,我可以发布更多的build.gradle
。
1条答案
按热度按时间eiee3dmh1#
您只是在调试时更改类,还是计划在运行中的服务器上更新应用程序。在Sping Boot 发明的10多年前,Intellij就已经有了热重载,所以我个人不使用
spring-boot-devtools
,只是在调试器中启动应用程序,然后执行shit+F9(旧热键)来重新编译和重载JVM的类。