SpringBoot开发 - 什么是热部署和热加载?devtool的原理是什么?

在SpringBoot开发调试中,如果我每行代码的修改都需要重启启动再调试,可能比较费时间;SpringBoot团队针对此问题提供了spring-boot-devtools(简称devtools)插件,它试图提升开发调试的效率。@pdai

  • SpringBoot开发 - 什么是热部署和热加载?devtool的原理是什么?
      • 什么是热部署和热加载?
    • 配置devtools实现热部署
      • devtool的原理?为何会自动重启?
      • devtool是否会被打包进Jar?
      • devtool为何会默认禁用缓存选项?
      • devtool是否可以给所有Springboot应用做全局的配置?
      • 如果我不用devtool,还有什么选择?

准备知识点

什么是热部署和热加载?

热部署和热加载是在应用正在运行的时候,自动更新(重新加载或者替换class等)应用的一种能力。(PS:spring-boot-devtools提供的方案也是要重启的,只是无需手动重启能实现自动加载而已。)

严格意义上,我们需要区分下热部署和热加载, 对于Java项目而言:

  • 热部署

    • 在服务器运行时重新部署项目
    • 它是直接重新加载整个应用,这种方式会释放内存,比热加载更加干净彻底,但同时也更费时间。
  • 热加载

    • 在在运行时重新加载class,从而升级应用。
    • 热加载的实现原理主要依赖java的类加载机制,在实现方式可以概括为在容器启动的时候起一条后台线程,定时的检测类文件的时间戳变化,如果类的时间戳变掉了,则将类重新载入。
    • 对比反射机制,反射是在运行时获取类信息,通过动态的调用来改变程序行为; 热加载则是在运行时通过重新加载改变类信息,直接改变程序行为。

什么是LiveLoad?

LiveLoad是提供浏览器客户端自动加载更新的工具,分为LiveLoad服务器和Liveload浏览器插件两部分; devtools中已经集成了LiveLoad服务器,所以如果我们开发的是web应用,并且期望浏览器自动刷新, 这时候可以考虑LiveLoad.

同一时间只能运行一个LiveReload服务器。 开始应用程序之前,请确保没有其他LiveReload服务器正在运行。如果从IDE启动多个应用程序,则只有第一个应用程序将支持LiveReload。

配置devtools实现热部署

我们通过如下配置来实现自动重启方式的热部署。

POM配置

添加spring-boot-devtools的依赖

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <optional>true</optional> <!-- 可以防止将devtools依赖传递到其他模块中 -->
    </dependency>
</dependencies>

IDEA配置

如果你使用IDEA开发工具,通常有如下两种方式:

  • 方式一: 无任何配置时,手动触发重启更新(Ctrl+F9)

(也可以用 mvn compile 编译触发重启更新)

  • 方式二: IDEA需开启运行时编译,自动重启更新

设置1:

File-

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue Devtools是一个用于调试Vue.js应用程序的浏览器扩展工具。它可以帮助开发人员检查组件层次结构、状态、事件和性能等方面的信息。\[1\] 要安装Vue Devtools,首先需要下载Vue Devtools工具,并将其安装到浏览器的扩展程序中。安装完成后,可以在浏览器的扩展程序中启用Vue Devtools。\[2\] 在使用Vue Devtools时,可以通过浏览器的开发者工具面板来查看Vue组件的层次结构、状态和事件。它还提供了一些其他功能,如时间旅行调试、性能分析和组件源代码查看等。\[3\] 总结来说,Vue Devtools是一个方便的工具,可以帮助开发人员更好地调试和优化Vue.js应用程序。 #### 引用[.reference_title] - *1* *2* [vue-devtools的安装与使用](https://blog.csdn.net/weixin_43843572/article/details/124980771)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [如何使用「vue-devtools」进行代码调试分析?使用及原理揭秘](https://blog.csdn.net/xsq123/article/details/125285668)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值