前言

最近在开发的时候,每次改动代码都需要启动项目,因为有的时候改动的服务比较多,所以重启的次数也就比较多了,想着每次重启等待也挺麻烦的,就打算使用DevTools工具实现项目的热部署

热部署是什么

大家都知道在项目开发过程中,常常会改动页面数据或者修改数据结构,为了显示改动效果,往往需要重启应用查看改变效果,其实就是重新编译生成了新的Class文件,这个文件里记录着和代码等对应的各种信息,然后Class文件将被虚拟机的ClassLoader加载。

而热部署正是利用了这个特点,它监听到如果有Class文件改动了,就会创建一个新的ClaassLoader进行加载该文件,经过一系列的过程,最终将结果呈现在我们眼前

类加载机制

Java中的类经过编译器可以把代码编译为存储字节码的Class文件,该Class文件存储了各种信息,最终要加载到虚拟机中运行使用。类加载机制(摘自《深入理解 Java 虚拟机》)虚拟机把描述类的数据从Class文件加载到内存中,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型。

添加依赖

org.springframework.bootspring-boot-devtoolstrue

DevTools的配置

#热部署生效spring.devtools.restart.enabled: true#设置重启的目录spring.devtools.restart.additional-paths: src/main/java#classpath目录下的WEB-INF文件夹内容修改不重启spring.devtools.restart.exclude: WEB-INF/**

IDEA需要的配置

当我们修改了Java类后,IDEA默认是不自动编译的,而spring-boot-devtools又是监测classpath下的文件发生变化才会重启应用,所以需要设置IDEA的自动编译:

  • File-Settings-Compiler-Build Project automatically
  • ctrl + shift + alt + /,选择Registry,勾上 compiler.automake.allow.when.app.running

idea修改代码后不重启项目_使用DevTool实现SpringBoot项目热部署相关推荐

  1. sts4创建spring项目_使用STS4新建springboot项目

    1.配置maven,自定义setting文件和仓库,一定要用阿里云镜像地址下载依赖,官方太坑了,整了半天都没弄好,原来是下载太慢文件损坏 alimaven central aliyun maven h ...

  2. springBoot修改代码不需要重启-热部署

    springboot每次修改代码都需要重启项目,进行热部署后就不需要每次修改代码都要重启项目了 热部署: 需要在pom.xml里进行配置 <dependency> <groupId& ...

  3. Node.js笔记 - 修改文件后自动重启node服务

    每次修改代码后都要手动重启node服务,虽然不是复杂的事,但是每次都要这么搞一次颇为麻烦. 所以nodemon登场了! nodemon会监测你已运行程序中的文件和目录,一旦被修改,它会自动重启node ...

  4. 解决 :IDEA 修改代码后 Local Changes 中没有提示待提交文件,代码自动提交了

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 1. 通常修改代码后 会在 Local Changes 中提示修改过的文件,如下: 2. 我的情况是 ...

  5. 64 位操作系统下, Revit 如何修改代码后再次快速调试新代码

    Visual Studio (简称VS)提供了暂时中断调试,然后修改代码,接着更新代码就可以实现继续调试运行的功能.但是这个再调试过程中暂时中断修改代码的功能在64位操作系统下无法实现. 这个问题导致 ...

  6. 【MySQL】修改配置后,重启MySQL报错[ERROR] The server quit without updating PID file

    问题: 在没有修改配置时,MySQL启动正常: 错1:修改配置后MySQL启动不了,报错: [root@localhost mysql]# service mysql restart Starting ...

  7. SourceInsight 修改代码后无法保存,显示“xxx is busy or opened by another process”

    SourceInsight 修改代码后无法保存,显示"xxx is busy or opened by another process" 是文件夹权限的问题,更新一下权限就行 ch ...

  8. git从gitlab下载代码,修改代码后上传代码到gitlab新建立的分支上

    git从gitlab下载代码,修改代码后上传代码到gitlab新建立的分支上 一.git clone下载代码 二.git pull确认更新到最新版本 三.查看仓库文件状态 四.查看远程地址 五.删除g ...

  9. 用idea建立jsp项目_用idea创建maven项目,配置tomcat详解

    用idea创建maven项目,配置tomcat详解,电脑上得有jdk1.7,或者1.8,然后就是maven3.x吧,再有就是tomcat7以上 下面就直接开始看图啦: 这个我刚刚开始没注意细看,原来w ...

最新文章

  1. 显著性图matlab,cvpr14_saliency_code 2014上的关于图像显著性区域的检测matlab代码。 271万源代码下载- www.pudn.com...
  2. 为预测用户出行需求,ofo开始使用AI实现智能调度
  3. jsp动作之 getProperty
  4. android launcher 相关
  5. MFC启动和关闭线程
  6. linux-2.6.38 input子系统(用输入子系统实现按键操作)
  7. sim7600ce 拨号上网测试_树莓派系列教程:通过SIM7600 4G模块NDIS拨号
  8. Windows 2000服务器安全配置精华技巧
  9. HTML和CSS 基本要点必看
  10. 设备激活错误。物理文件名 'D:\LOG\ShoppingDB_Log.ldf' 可能有误。
  11. php语言输出九九乘法表_PHP 输出九九乘法表
  12. textarea还剩余字数统计
  13. 摘录一些介绍Linux DKMS的博客文章
  14. zabbix client安装配置执行
  15. ubuntu修改文件权限
  16. 【历史上的今天】6 月 25 日:笔记本之父诞生;Windows 98 发布;通用产品代码首次商用
  17. 代码安全之代码混淆及加固(Android)
  18. matlab 设计 希尔伯特变换器,基于Matlab的FIR型希尔伯特变换器设计
  19. 讯飞离线语音命令词+TTS离线发音,实现命令词交互(windows dll for unity插件)
  20. thon中的全局变量

热门文章

  1. 【剑指offer】面试题33:二叉搜索树的后序遍历序列(Java)
  2. c++矩阵连乘的动态规划算法并输出_算法面试必修课,动态规划基础题型归纳(三)
  3. java bean set_JavaBean自动生成get和set方法
  4. python将数据集分成训练样本和类标签
  5. PyTorch框架学习十三——优化器
  6. 吴恩达作业5:正则化和dropout
  7. kudu参数优化设置,让集群飞起来~
  8. 安装 Python 包时解决 Microsoft visual c++ 14.0 is required 问题
  9. DOS 命令、必会的 10个 DOS 命令
  10. Spring Data JPA 从入门到精通~@NamedQueries预定义查询