IDEA如何设置热启动

背景

在开发过程中,当写完一个功能我们需要运行应用程序测试,可能这个小功能中存在多个小bug,我们需要改正后重启服务器,这无形之中拖慢了开发的速度增加了开发时间,SpringBoot提供了spring-boot-devtools,使我们在更改应用和配置文件的时候,自动重启应用!

热启动配置步骤

一、 工程中添加依赖

打开pom.xml文件添加依赖

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-devtools</artifactId>
   <scope>runtime</scope>
   <optional>true</optional>
</dependency>

只要classpath下的文件有变动,它就会自动重启。这在使用IDE时非常有用,因为可以很快得到代码改变的反馈。默认情况下,classpath下任何指向文件夹的实体都会被监控,注意一些资源的修改比如静态assets,视图模板不需要重启应用。
  由于DevTools监控classpath下的资源,所以唯一触发重启的方式就是更新classpath。在Eclipse里,保存一个修改的文件将引起classpath更新,并触发重启。在IntelliJ IDEA中,默认是不自动编译的,我们需要设置自动编译。

二、设置IDEA自动编译

(1) 快捷键Ctrl+Alt+S打开设置,在(Build, Execotion, Deployment) -> Compiler-> 勾选Build Project automatically项,重启IDEA。
![在这里插入图片描述](https://img-blog.csdnimg.cn/a69623fe3fd94ac7bc9054511be37dff.png

(2) 同时按下快捷键Ctrl + Shift + Alt + /,会弹出下面的方框,选择Registry
在这里插入图片描述
(3) 勾选 compiler.automake.allow.when.app running和compiler.document.save.enabled(指定是否启用保存项目响应当文档被更改),并将它们的对应的保存动作延时时间适当缩小,或者使用默认值也可以。当然,我没修改它的默认值的时候,发现项目修改的时候,它自动重新热启动的时间有点久(可缩小对应时间或者参考本文下一段解决方法)。
在这里插入图片描述
重启应用,当改动代码时,观察控制台输出,你会发现Spring Boot已经检测到了文件变化,并重新启动,你会发现体验为何如此之棒,爽极了!

热启动与热部署的区别

热启动是指在已经运行的项目上,再次启动(比如说,做了修改代码),少加载了一些东西,从而启动的比快,节省开发时间。
热部署会启动自动加载修改代码的部分。
而idea 本身不支持热部署,需要在idea中安装插件JRebel。

IntelliJ IDEA热启动功能(Hot Restart 或 Hot Swap)主要用于 Java 应用程序开发过程中,在不重启整个应用程序的情况下更新已更改的类文件。这种功能对于提高开发效率非常有帮助,尤其是在处理大型项目时。 在 IntelliJ IDEA 2024 版本中,热启动功能得到了进一步增强和支持。以下是关于该功能的一些重要细节: ### 热启动的工作原理 当开发者修改代码并希望立即看到效果时,IDEA 提供了一种机制来重新加载这些变化而无需完全停止和重启应用。此过程依赖于 JVM 的 HotSwap 技术以及更高级别的工具支持,例如 Spring Loaded 和 JRebel[^1]。 ### 配置热启动功能 为了启用热启动功能,可以按照以下方式配置环境: 1. **确保 JDK 支持**:确认使用的 JDK 版本支持动态类重载。通常情况下,Oracle JDK 和 OpenJDK 均提供基础级别的支持。 2. **设置运行/调试配置**:打开 `Run` -> `Edit Configurations...`,选择目标配置,并勾选选项 `"Allow auto-make to start even if developed application is currently running"`[^2]。 3. **安装插件**(如果必要):某些场景下可能需要额外的第三方插件辅助实现完整的热部署体验。推荐尝试安装如 `Spring Assistant` 插件以获得更好的兼容性和扩展能力。 ### 解决常见问题 尽管 IDEA 努力优化用户体验,但在实际操作中仍可能出现一些障碍。下面列举了几种典型情况及其解决方案: - 如果发现改动未生效,请验证是否满足上述前提条件;另外注意只有方法体内部逻辑允许即时替换,新增加的方法或者字段则需手动触发一次完整构建流程才能反映出来; - 对于框架集成型项目(比如基于 Spring Boot 构建的应用),建议开启 devtools 组件以便充分利用其内置监控特性加速反馈循环时间长度缩短至毫秒级响应速度提升显著优于传统手段数倍以上的效果表现优异值得信赖长期坚持下去定能取得理想成果[^3]。 ```java // 示例代码展示如何利用 DevTools 实现快速迭代测试目的 @SpringBootApplication public class DemoApplication { public static void main(String[] args) throws InterruptedException { SpringApplication.run(DemoApplication.class, args); while (true){ System.out.println("Waiting for code changes..."); Thread.sleep(5000L); // Simulate long-running process } } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值