前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Idea环境实现SpringBoot实现两种热部署方式(亲测有效)

Idea环境实现SpringBoot实现两种热部署方式(亲测有效)

作者头像
Arebirth
发布2019-11-21 20:01:05
3.6K0
发布2019-11-21 20:01:05
举报

即将介绍的两种热部署方式:

  1.SpringLoaded

  2.DevTools

区别:

SpringLoader:SpringLoader 在部署项目时使用的是热部署的方式。

 DevTools:DevTools 在部署项目时使用的是重新部署的方式

SpringBoot版本:2.1.9-RELEASE
IDEA版本:2019.2.4

热部署   大家都知道在项目开发过程中,常常会改动页面数据或者修改数据结构,为了显示改动效果,往往需要重启应用查看改变效果,其实就是重新编译生成了新的Class文件,这个文件里记录着和代码等对应的各种信息,然后Class文件将被虚拟机的ClassLoader加载。 而热部署正是利用了这个特点,它监听到如果有Class文件改动了,就会创建一个新的ClaassLoader进行加载该文件,经过一系列的过程,最终将结果呈现在我们眼前。 类加载机制   Java中的类经过编译器可以把代码编译为存储字节码的Class文件,该Class文件存储了各种信息,最终要加载到虚拟机中运行使用。   虚拟机把描述类的数据从Class文件加载到内存中,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型。


SpringLoaded 实现热部署方式:

缺陷:不会加载静态资源,只加载类文件,也就是只热部署加载class

  1.到mvn仓库下载jar包

下载后记住这个jar包的绝对路径。接下来会用到   2.配置SpringBoot的启动参数配置

在VMOptions里面添加 -javaagent:jar包路径 -noverify

3.以Debug模式进行启动,再更改代码后会自动更新classes文件,至此完成。


DevTools实现热部署方式(自重启)

在激活了开发者工具后,ClassPath里对文件做任何修改都会触发应用程序重启。为了让重启的速度够快,不会修改的类(第三方JAR包)都加载到了基础类加载器里,而应用程序的代码则会加载到一个单独的重启类加载器里。检测到变更时,只会重启类加载 器重启。
  有些ClassPath里的资源变更后不需要重启应用程序。像Thymeleaf这样的视图模板可以直接编辑,不用重启。在/static 或 /public里的静态资源也不用重启应用程序,所以Spring Boot开发者工具在重启时排除掉了如下目录:/META-INF/resources、/resources、/static、/public、/templates。

一、pom依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> <!-- optional目的是为了继承他的项目不继承这个devtools插件 --> </dependency> 二、勾选Build project automatically(自动构建)

三、IDEA 设置为在程序运行过程中,依然允许自动编译 步骤: ctrl + shift + alt + /,选择Registry,勾选勾上 Compiler autoMake allow when app running

勾选目标的位置自己找找,排列顺序不一样,勾选后记得重启生效! 四、设置自动加载资源配置和编译

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-11-20 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 即将介绍的两种热部署方式:
  • 区别:
  • SpringLoaded 实现热部署方式:
  • DevTools实现热部署方式(自重启)
相关产品与服务
云开发 CLI 工具
云开发 CLI 工具(Cloudbase CLI Devtools,CCLID)是云开发官方指定的 CLI 工具,可以帮助开发者快速构建 Serverless 应用。CLI 工具提供能力包括文件储存的管理、云函数的部署、模板项目的创建、HTTP Service、静态网站托管等,您可以专注于编码,无需在平台中切换各类配置。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档