前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >springboot(8)-热部署

springboot(8)-热部署

作者头像
叔牙
发布于 2020-11-19 07:14:42
发布于 2020-11-19 07:14:42
4120
举报

spring为开发者提供了一个名为spring-boot-devtools的模块来使Spring Boot应用支持热部署,提高开发者的开发效率,无需手动重启Spring Boot应用。

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

一)新建应用&添加依赖

新建项目之后,除了添加springboot基础依赖之外,还要添加spring-boot-devtools:

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter</artifactId>

</dependency>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-web</artifactId>

</dependency>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-devtools</artifactId>

</dependency>

二)修改ide配置&浏览器缓存禁用

为了实现热部署,ide要支持自动编译,并且验证的时候要禁用浏览器缓存(否则看不到变更后内容)。

1.修改idea配置

在idea中打开File->Settings->Compile,勾选Build project automatically:

使用快捷键Ctrl+Shift+Alt+/,选择Registry,然后勾选Compiler autoMake allow when app running:

这样我们就在服务端启用了在应用运行期间自动编译和构建。

2.禁用浏览器缓存

本例中我们使用chrome测试,如果不禁用缓存,后端应用动态部署后前端请求可能看不到变更和新增内容,点击F12或者Ctrl+Shift+i后,在network选项中勾选Disable cache:

三)编码&测试

编写一个简单的Controller:

@RestController

public class IndexController {

@GetMapping("/hello")

public String hello() {

return "hello";

}

}

启动应用后浏览器输入http://localhost:8080/hello:

应用启动没有问题并且能够接收和处理请求。修改Controller增加如下内容:

@GetMapping("/name")

public String name() {

return "my name is shuya";

}

保存后发现应用自动重新编译启动,浏览器输入http://localhost:8080/name:

请求能够被正常的接收和处理,也就是说明我们配置的springboot热部署已经生效。

总结

springboot热部署在开发阶段特别实用,我们对应用修改之后不需要手动点构建和部署就能自动重启后看到效果,当然可能springboot实现热部署还有其他方式,这里暂不做过多探讨,有兴趣的可以自己研究一下。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-10-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 PersistentCoder 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
SpringBoot热部署
深层原理是使用了两个ClassLoader,一个Classloader加载那些不会改变的类(第三方Jar包),另一个ClassLoader加载会更改的类,称为restart ClassLoader,这样在有代码更改的时候,原来的restart ClassLoader 被丢弃,重新创建一个restart ClassLoader,由于需要加载的类相比较少,所以实现了较快的重启时间。
十玖八柒
2022/08/01
4900
SpringBoot热部署
SpringBoot:模块探究之spring-boot-devtools
Spring Boot 使我们能够快速设置和运行服务。为了进一步增强开发体验,Spring 发布了 spring-boot-devtools 工具——作为 Spring Boot-1.3 的一部分
栗筝i
2022/12/24
9220
SpringBoot:模块探究之spring-boot-devtools
SpringBoot项目 IDEA热部署
在实际开发过程中,每次修改代码就得将项目重启,重新部署 对于一些大型应用来说,重启时间需要花费大量的时间成本。对于一个后端开发者来说,重启过程确实很难受啊。 Spring为开发者提供了一个名为spring-boot-devtools的模块来使Spring Boot应用支持热部署,提高开发者的开发效率,无需手动重启Spring Boot应用。
Java_慈祥
2024/08/06
1130
SpringBoot项目 IDEA热部署
Spring Boot DevTools:加速开发的热部署工具
在Spring Boot的开发过程中,快速反馈和效率至关重要。Spring Boot DevTools是一个为开发者设计的模块,支持热部署(hot swapping),能够实现应用的快速重启和自动重载,极大地提高了开发效率。本篇博客将介绍Spring Boot DevTools的核心概念,并通过具体的实战示例展示如何在开发过程中利用这一工具。
小马哥学JAVA
2024/04/28
5190
SpringBoot图文教程13—SpringBoot+IDEA实现代码热部署
想想一下,昏暗的灯光下,凌晨一点的你正在写着代码,思路如尿崩,写代码肆意顺畅,但是这个时候,你为了测试代码需要频繁的手动重启项目。这是一种何种的卧草,顺畅的思路被手动启动项目分割的支离破碎。
鹿老师的Java笔记
2020/03/30
5120
IDEA中实现springboot热部署
现在SpringBoot就可以自动热部署了,效果还不错,但是感觉速度有点慢。 settings->Languages & Frameworks->Spring->Spring Boot 设置Refresh health in the Actuator tab ewver为1
超级小的大杯柠檬水
2024/11/21
700
IDEA中实现springboot热部署
SpringBoot快速部署
使用mvn build-spring-boot:run启动,只对修改返回值有效,而对添加方法无效。
Yuyy
2022/06/28
2090
springboot实现热部署
在实际开发过程中,每次修改代码就得将项目重启,重新部署,对于一些大型应用来说,重启时间需要花费大量的时间成本。对于一个后端开发者来说,重启过程确实很难受啊。在 Java 开发领域,热部署一直是一个难以解决的问题,目前的 Java 虚拟机只能实现方法体的修改热部署,对于整个类的结构修改,仍然需要重启虚拟机,对类重新加载才能完成更新操作。下面我=我们就看看对于简单的类修改的热部署怎么实现。
全栈程序员站长
2022/08/31
1.3K0
springboot实现热部署
Spring Boot 热部署
Spring Boot 热部署即避免服务频繁的重启启动的一种策略,可以在修改代码之后自动部署服务,避免重启。 1. pom.xml 配置
Freedom123
2024/03/29
1100
Idea环境实现SpringBoot实现两种热部署方式(亲测有效)
SpringLoader:SpringLoader 在部署项目时使用的是热部署的方式。
Arebirth
2019/11/21
3.8K0
SpringBoot开发利刃之热部署原理及最优实践
Spring Boot为开发者提供了一个名为spring-boot-devtools的额外工具模块来使得Spring Boot应用支持热部署,提高开发者的开发效率,无需手动重启Spring Boot应用,以此提升了Spring Boot应用的开发体验。
Freedom123
2024/03/29
4550
SpringBoot开发利刃之热部署原理及最优实践
IDEA如何使用热部署方式启动项目?
操作步骤:打开顶部工具栏 File -> Settings -> Default Settings -> Build -> Compiler 然后勾选 Build project automatically 。
全栈程序员站长
2022/08/31
1.8K0
IDEA如何使用热部署方式启动项目?
springboot实现热部署(idea2018)
spring-boot-devtools是一个为开发者服务的一个模块,其中最重要的功能就是热部署。原理是在发现代码有更改之后,重新启动应用,但是速度比手动停止后再启动更快。其深层原理是使用了两个ClassLoader,一个Classloader加载那些不会改变的类(第三方Jar包),另一个ClassLoader加载会更改的类,称为restart ClassLoader,这样在有代码更改的时候,原来的restart ClassLoader被丢弃,重新创建一个restart ClassLoader,由于需要加载的类相比较少,所以实现了较快的重启时间。即devtools会监听classpath下的文件变动,并且会立即重启应用(发生在保存时机)
微醺
2019/01/17
6470
SpringBoot的热部署
我们在开发中反复修改类、页面等资源,每次修改后都是需要重新启动才生效,这样每次启动都很麻烦,浪费了大量的时间,我们可以在修改代码后不重启就能生效,在 pom.xml 中添加如下配置就可以实现这样的功能,我们称之为热部署
名字是乱打的
2022/05/13
2410
SpringBoot的热部署
SpringBoot项目在IntelliJ IDEA中实现热部署
spring-boot-devtools是一个为开发者服务的一个模块,其中最重要的功能就是自动应用代码更改到最新的App上面去。 原理是在发现代码有更改之后,重新启动应用,但是速度比手动停止后再启动更快。 其深层原理是使用了两个ClassLoader,一个Classloader加载那些不会改变的类(第三方Jar包),另一个ClassLoader加载会更改的类,称为restart ClassLoader ,这样在有代码更改的时候,原来的restart ClassLoader被丢弃,重新创建一个restart ClassLoader,由于需要加载的类相比较少,所以实现了较快的重启时间。
一朵灼灼华
2022/08/05
7820
IDEA 实现 SpringBoot 热部署
IDEA配置 Maven配置 浏览器缓存配置 IDEA配置 CTRL + SHIFT + A 查找 make project automatically 并选中 CTRL + SHIFT +
白墨石
2021/01/13
2460
IDEA 实现 SpringBoot 热部署
springboot+idea热部署(自动刷新)
spring为开发者提供了一个名为spring-boot-devtools的模块来使Spring Boot应用支持热部署,提高开发者的开发效率,无需手动重启Spring Boot应用。
全栈程序员站长
2022/09/14
1.6K0
springboot+idea热部署(自动刷新)
SpringBoot热部署配置
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014427391/article/details/89765909
SmileNicky
2019/05/14
5520
SpringBoot热部署配置
Spring Boot的热部署
在开发中,业务变化、代码错误等发生时,难免修改程序。为了正确运行出修改的结果,我们往往需要重启应用,否则将不能看到修改后的结果,这一启动过程是非常浪费时间的,导致开发效率低。因此,我们有必要学习Spring Boot开发的热部署,自动实现应用的重启和部署,大大提高开发调试效率。
别团等shy哥发育
2023/02/25
5160
Spring Boot的热部署
Spring Boot 开发应用热部署
spring-boot-devtools 实现热部署 想在Spring Boot中使用该功能非常简单,添加依赖: <!-- 热部署模块 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> <!-- optional=true,依赖不会传递,该项目依赖devtools;之后
斯武丶风晴
2018/03/01
6330
Spring Boot 开发应用热部署
相关推荐
SpringBoot热部署
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文