热部署-----SpringBoot-----(附IDEA操作)

我们每次代码修改,更改配置信息,升级软件的时候,需要重新启动服务进行测试、验证,这不仅浪费时间和精力,而且每次重启服务影响他人使用?热部署可以帮我们轻松解决这些问题!

热部署的概念

热部署就是在程序软件运行过程中,当修改代码或者软件升级的时候,不需要重启服务,可以自动重新加载运行。当代码变化时,它能快速的反馈给我们。

SpringBoot实现热部署的原理

深层原理是使用了两个ClassLoader,一个Classloader加载那些不会改变的类(第三方Jar包),另一个ClassLoader加载会更改的类,称为restart ClassLoader,这样在有代码更改的时候,原来的restart ClassLoader 被丢弃,重新创建一个restart ClassLoader,由于需要加载的类相比较少,所以实现了较快的重启时间。

SpringBoot项目实现热部署(IDEA)

SpringBoot包含一个额外的应用可以让开发工作更加便捷高效。
spring-boot-devtools module可以在任一项目中提供便利。为了获得 devtools的支持,我们需要在项目中添加 module dependency,下面列出了Maven 和Gradle的,你可以根据项目需要进行选择。

MAVEN

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

Gradle

dependencies {
    developmentOnly("org.springframework.boot:spring-boot-devtools")
}

IDEA中对配置进行修改

第一步: 选择自动编译(这里只在程序不运行或者DEBUG时有用)

Eclipse中自动编译;IDEA中不自动编译,需要我们启动服务器时才编译,所以在IDEA中·,我们就需要自己将自动编译勾选。

打开顶部工具栏 File -> Settings -> Build、Execution、Deployment-> Compiler 然后勾选 Build project automatically

在这里插入图片描述

第二步: 选择自动编译(服务运行中有用)

同时按住 Ctrl + Shift + Alt + / 然后进入Registry
在这里插入图片描述
然后找到compiler.automake.allow.when.app.running,在程序运行中自动编译

在这里插入图片描述
到这里,我们就完成了所有的配置。

但这并不意味着,我们修改代码时,热部署会一直将代码自动编译。因为只有我们离开开发工具,打开其他应用,如浏览器,测试工具的时候,restart开始工作。

我们可以在IDEA前打开浏览器,来验证自己设置的热部署的自动编译是否成功。

在实际的项目中,我们并不需要全部的文件都进行热部署的自动编译,例如确定的资源/META-INF/maven, /META-INF/resources, /resources, /static, /public,和/templates,这时我们可以将不需要的文件,进行忽略。把自己需要忽略的文件路径写下即可。

spring.devtools.restart.exclude=static/**,public/**
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值