【发布时间】:2019-06-30 13:12:55
【问题描述】:
我将spring-boot-starter 用于一个较大的服务器项目,该项目打开一个静态套接字进行通信。由于每次代码更改后不必总是在Intellij IDEA 中重新启动服务器(从而退出套接字连接),我正在尝试 HotSwap 更改的 *.java 代码。
我尝试如下没有成功:
- 添加了maven
spring-boot-devtools依赖 - 设置>
Build project automatically [yes] - 注册表:
complier.automake.allow.when.app.running [true] - 运行配置 > 更新策略:
Update classes and resources
但是:每当我修改一个类时,我的应用程序都会自动重新启动。当然这也会重新加载类,但是我也可以自己随意触发重启。我没有通过自动重启获得任何东西。
所以我通过spring.devtools.restart.enabled=false 禁用了重启。但是在服务器重新启动之前,代码交换不起作用。
但是如果没有明确的重新启动,是否有可能?
旁注:我不是要在浏览器中热交换 Web 用户界面。我只想重新加载java代码。
【问题讨论】:
-
您是否使用 Gradle 任务来运行应用程序?如果你想使用 IDE 热插拔,你应该使用 IDE 运行/调试配置来启动应用程序。
-
如果您更改应用程序的任何结构部分,热插拔将不起作用。如果您更改参数的类型、方法的名称、返回的类型、创建新的方法/类/等等……您将无法做到。如果您在方法中更改某些内容,只有它所在的类会重新编译,您不需要重新启动应用程序,所以我想它会按照您的意愿工作。但是对于任何“大”的变化它都不起作用
标签: java spring spring-boot intellij-idea hotswap