IDEA debug模式修改代码未热加载

idea debug启动后,在调试过程中,修改代码后,不能像eclipse debug模式那样热加载,其实idea有相关的配置,只是默认是不打开的,需要手动修改配置。

修改启动配置Run->Edit Configurations->Spring Boot下对应的应用->Running Application Update Policies

1、on update action 当发生更新后采取的操作

Do nothing : 不做任何更新操作 
Update resources :如果发现有更新,而且更新的是资源文件(*.jsp,*.xml等,不包括java文件),就会立刻生效-Update classes and resources : 如果发现有更新,这个是同时包含java文件和资源文件的,就会立刻生效(一般使用这个)
Update classes and resources: 运行模式下jsp 立即生效,java 需要redeploy才可生效(推荐)
Update trigger file 更新触发器文件
Hot swap classes and update trigger file if failed:  Update 如果Artifact是war包形式的话,On Update action与On frame deactivation中的选项也是不一样的:没有Update resources和 Update classes and resources这种选项,取而代之的是Hot Swap Classes选项,本质的意思是一样的。

2、On Frame deactivation:表示idea窗口失去焦点时的操作

    Do nothing : 不做任何事 (一般使用这个,因为失去焦点的几率太大,会出现频繁更新)
    Update resources : 失去焦点后,修改的resources文件都会立刻生效
    Update classes and resources : 失去焦点后,修改的java ,resources文件都会立刻生效

### 关于 IntelliJ IDEA热加载功能 #### 热加载的概念 在 Web 开发环境中,热部署是指无需重新启动整个应用程序即可将代码更改实时应用到运行中的容器中。这种技术能够显著缩短开发周期并提高效率[^4]。 --- #### 配置方法 ##### 1. 启用 HotSwap 功能 HotSwap 是 JVM 提供的一种机制,允许开发者在程序运行期间替换已加载的类文件。要启用此功能,在 IntelliJ IDEA 中需确保以下设置正确: - **Debug 模式**:热加载仅在 Debug 模式下有效[^3]。 - **自动保存选项**:确认 IDE 设置启用了 `File | Settings | General` 下的 `Save files automatically if application is idle for N sec` 选项。 ##### 2. 更新类和资源文件 IntelliJ IDEA 支持通过快捷键触发类和资源文件的更新: - 使用快捷键 `Ctrl + F10` 可以执行 `Update Classes and Resources` 操作[^5]。 - 如果希望更频繁地同步更改,可以通过菜单栏选择 `Run | Update Application` 来手动完成这一过程。 ##### 3. 配置 Tomcat 插件 对于基于 Servlet 的项目(如 Spring Boot),推荐使用内置的 Tomcat 插件来实现高效的热部署。具体步骤如下: - 在项目的 `Run/Debug Configurations` 中勾选 `Build project before running` 和 `Update classes and resources` 选项。 - 对于某些特殊场景,还可以调整 `On 'Update' action` 参数为 `Reload changed classes`。 ##### 4. 调整 IDEA 自动化行为 如果发现热加载能正常工作,可能是由于自动化配置不足所致。建议尝试以下优化措施: - 手动保存文件 (`Ctrl + S`) 并强制重新编译修改后的类文件 (`Ctrl + F9`)。 - 确认对核心逻辑结构做出破坏性的变更(例如新增字段或改变方法签名)。 --- #### 注意事项 尽管热加载极大提升了开发体验,但仍存在一些局限性需要注意: - 不支持大规模结构调整,比如增删类成员变量、重命名函数等操作。 - 若目标框架提供了额外的支持工具(如 JRebel 或 DevTools),则可进一步扩展热加载的能力范围。 --- ```java // 示例代码展示如何利用热加载快速迭代业务逻辑 public class HelloWorldController { public String sayHello() { return "Hello, Spring Boot!"; // 修改此处内容后立即查看效果 } } ``` 上述例子展示了当控制器返回值发生变化时,只需简单编辑源码而不需要重启服务便能观察最新结果。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值