springboot 热更新、热加载 IDEA

本文简要介绍了如何在IDEA中配置SpringBoot的热部署,包括在pom.xml添加devtools依赖和spring-boot-maven-plugin插件,修改application.properties启用热部署,以及开启IDEA的自动编译和Registry设置。热部署使得代码修改后无需手动重启应用即可生效,提高了开发效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


之前一直在用热部署,但没有总结,网上有很多类似文章,我这里用最简洁的描述总结一下,开发工具是IDEA。

一、热部署

热部署是指对程序进行(修改)升级后,不需要重新启动应用,能够试程序升级生效。

为什么要用热部署?
每次程序升级,都需要手动重启程序,操作繁琐并且耗时较长。

热部署的优点?
重启快,不用手动干预。具体原因会在实现原理中说明。

二、IDEA中实现springboot热部署

1、pom文件依赖

  • pom文件添加spring-boot-devtools依赖
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
  • 添加spring-boot-maven-plugin插件
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>1.5.7.RELEASE</version>
                <configuration>
                    <fork>true</fork>
                    <addResources>true</addResources>
                </configuration>
            </plugin>

2、project配置文件修改

application.properties文件中添加下面代码

spring.devtools.restart.enabled=true

或者,
application.yaml文件中添加下面代码

spring:
  devtools:
    restart:
      enabled: true

3、IDEA配置修改

  • 打开自动编译选项
    Preferences --> Build,Execution,Deployment --> Compiler --> Build project automatically,勾选。

在这里插入图片描述

  • Registry配置修改
    打开Registry配置界面。
    windows快捷键:ctrl + shift + alt + /
    mac快捷键:alt + command + shift + /

在这里插入图片描述

勾选compiler.automake.allow.when.app.running后关闭即可。

在这里插入图片描述

三、测试验证

新建一个controller类,保存

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @Author dingws
 * @PackageName cece_content_service_admin
 * @Package com.content.admin.contentservice.controller
 * @Date 2021/4/27 1:54 下午
 * @Version 1.0
 */
@RestController
@RequestMapping("/test")
public class testAutoController {

    @RequestMapping("/testA")
    public String getTestA(){
        return "function getTestA";
    }
}

在浏览器输入路由后,能正常访问。

在这里插入图片描述

  • 代码修改- –>保存:应用会重启
  • 修改配置文件–->保存:应用会重启
  • 修改页面–->保存:应用不会重启,但会重新加载,页面会刷新

四、实现原理

首先我们说一下JVM的工作原理:
JVM每次启动后,需要申请内存空间,然后会把项目下所有的*.class文件通过类加载器load进内存,然后建立栈区和代码区的映射,关闭时会进行释放和清理,整个过程比较耗时。
深入了解可参考《JVM类加载器机制与类加载过程》

热部署的原理可以概括为在启动的时候起一条后台线程,定时的检测类文件的时间戳变化,如果类的时间戳变掉了,则将类重新载入。

假设项目一共有1000个类,手动重启需要加载1000个类,而热启动只会把新修改的文件重新load进去就行,而且省去了JVM自身初始化的时间,所以效率比较高。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值