前言

最近在开发的时候,每次改动代码都需要启动项目,因为有的时候改动的服务比较多,所以重启的次数也就比较多了,想着每次重启等待也挺麻烦的,就打算使用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. Python数据挖掘:绘制直方图,设置上下限和步长,绘制子图
  2. 路由器配置与管理完全手册(Cisco篇)学习感想
  3. Oracle Flashback Database and Restore Points 说明
  4. js mysql java_Java、mysql、html、css、js 注释大小写
  5. .net 事件委托 java_仿net事件委托的java事件模型实现(转csdn)
  6. Spring学习笔记(三)
  7. Java描述设计模式(14):解释器模式
  8. 做web前端的小伙伴注意了,未来这些发展方向可以试试!
  9. VMware虚拟机设置(vmtools分辨率)
  10. 汪文君PowerMock实战视频
  11. 开机脚本之——小键盘代替鼠标热键
  12. 企业级用户画像: 价格敏感度模型-PSM
  13. TM4C129建立FREERTOS工程
  14. 逆向经验 + 逆向工具
  15. 人脸、指纹、虹膜、行为,你需要的人工智能生物识别AI数据集全在这里
  16. 跨平台应用开发进阶(十二) :uni-app 实现应用桌面图标角标提示及应用跳转
  17. Ubuntu系统下安装ZEC币服务
  18. 数独(日语:数独/すうどく sūdoku)
  19. 计算机视觉-CS231n-Lecture 1
  20. 背单词软件单项选择算法

热门文章

  1. 7-2 是否完全二叉搜索树 (30分)
  2. Leetcode--394. 字符串解码(Java)
  3. Java中注释的使用
  4. s3c6410 jpeg编码 linux,S3C6410 裸机硬件JPEG解码
  5. 查看文件详细信息linux,linux命令stat,查看文件详细信息
  6. python可以代替plc吗_PLC可以代替安全控制器吗?电气工程师告诉你
  7. tf.cast()类型转换函数
  8. Andoird自定义ViewGroup实现竖向引导界面
  9. VS 编写 x64 内联汇编
  10. 奇妙的安全旅行之DES算法(二)