spring-boot-devtools是一个为开发者服务的一个模块,其中最重要的功能就是自动应用代码更改到最新的App上面去。
原理是在发现代码有更改之后,重新启动应用,但是速度比手动停止后再启动更快。
其深层原理是使用了两个ClassLoader,一个Classloader加载那些不会改变的类(第三方Jar包),另一个ClassLoader加载会更改的类,称为restart ClassLoader
,这样在有代码更改的时候,原来的restart ClassLoader被丢弃,重新创建一个restart ClassLoader,由于需要加载的类相比较少,所以实现了较快的重启时间。

即devtools会监听classpath下的文件变动,并且会立即重启应用(发生在保存时机)

一、开启idea自动make功能

1、CTRL + SHIFT + A --> 查找make project automatically --> 选中

2、CTRL + SHIFT + A --> 查找Registry --> 找到并勾选compiler.automake.allow.when.app.running

最后重启idea

二、使用spring-boot-1.3开始有的热部署功能 
1、加maven依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><optional>true</optional>
</dependency>

2、开启热部署

<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration>    <fork>true</fork>//该配置必须</configuration></plugin></plugins>
</build>

三、Chrome禁用缓存 
F12(或Ctrl+Shift+J或Ctrl+Shift+I)--> NetWork --> Disable Cache(while DevTools is open)

至此,在idea中就可以愉快的修改代码了,修改后可以及时看到效果,无须手动重启和清除浏览器缓存。

测试方法:
1.修改类-->保存:应用会重启
2.修改配置文件-->保存:应用会重启
3.修改页面-->保存:应用会重启,页面会刷新(原理是将spring.thymeleaf.cache设为false)

不能使用分析:
1.对应的spring-boot版本是否正确,我这里使用的是1.5.3.RELEASE版本;
2.是否加入plugin了,以及属性<fork>true</fork>
3.Intellij IDEA是否开启了Make Project Automatically。
4.如果设置SpringApplication.setRegisterShutdownHook(false),则自动重启将不起作用。

参考:

http://412887952-qq-com.iteye.com/blog/2300313

SpringBoot项目在IntelliJ IDEA中实现热部署 1相关推荐

  1. SpringBoot项目在IntelliJ IDEA中实现热部署

    spring-boot-devtools是一个为开发者服务的一个模块,其中最重要的功能就是自动应用代码更改到最新的App上面去. 原理是在发现代码有更改之后,重新启动应用,但是速度比手动停止后再启动更 ...

  2. IDEA中设置热部署

    自从 IntelliJ IDEA 出道以来,就得到很多人青睐,现在越来越多的人从Eclipse中走入IntelliJ IDEA,我也是其中一个,当然刚开始会有很多不适应,不止因为快捷键,还有它的配置, ...

  3. Springboot项目如何设计接口中敏感字段模糊查询?

    目录 前言 场景分析 实现方案 环境配置 依赖配置 代码实现 总结 前言 在<Springboot项目如何设计接口中敏感字段的加密.解密>和<Springboot项目如何设计接口中敏 ...

  4. 记录springBoot项目使用jar包中的mapper报错问题

    记录springBoot项目使用jar包中的mapper报错问题 背景 双数据源的实现 启动时报找不到对应的service 启动报mapper找不到 启动报no sqlsessionfactory 启 ...

  5. 热部署在java中的包名_09-springboot工程中的热部署实现。

    热部署简介 Spring Boot 开发者为Spring Boot项目中提供了一个热部署(spring-boot-devtools)模块,支持项目的热部署(修改了某些资源以后无需重启服务),以提高开发 ...

  6. idea中reload all from disk_SpringBoot IDEA中实现热部署

    在前后端分离的时代中,或许我们基本上很少会用到传统的MVC模式,但是对于部分老项目或者一些小项目来说,传统的MVC方式依然有着它短平快的优点.那么对于开发中,我们常遇到的一个困扰就是,如何像传统Spr ...

  7. 不使用 Maven 等构建工具,而使用原始方法在 IntelliJ IDEA 中整合 Tomcat 部署 Web 应用

    不使用 Maven 等构建工具,而使用原始方法在 IntelliJ IDEA 中整合 Tomcat 部署 Web 应用   我们知道,部署 Web 应用可以直接将 Web 应用的文件夹置于 Tomca ...

  8. Intellij IDEA+Tomcat+JRebel热部署

    Intellij IDEA+Tomcat+JRebel热部署 一.安装JRebel插件 1. 在线安装 打开设置 File ->setting或者直接点设置的图标进入 在线下载并安装 2. 破解 ...

  9. spring mvc项目在IDEA下使用jrebel热部署报错!!

    转载:https://segmentfault.com/q/1010000006068898 spring mvc项目在IDEA下使用jrebel热部署报错!! 25-Jul-2016 20:43:4 ...

最新文章

  1. html流动模型,javascript的事件流模型都有什么?
  2. ASP .NET 如何在 SQL 查询层面实现分页
  3. python开发板比较_再不学点Python,咱真老了--Adafruit Metro M0 Express开发板评测
  4. Oracle中的Union、Union All、Intersect、Minus
  5. mysql自带命令使用教程_自用mysql自带命令实现数据库备份还原
  6. Win10_MySQL环境搭建以及Navicat的使用全解
  7. php 模块 远程,ThinkPHP远程调用模块的操作方法 URL 参数格式
  8. linux内存管理(二)-内存数据结构分析
  9. 卷积神经网络在tenserflow的实现
  10. 【反向并查集、联通图】P1197 [JSOI2008]星球大战
  11. 2009年具有中国特色的脑筋急转弯
  12. RubyOnRails 在linux平台安装的过程
  13. yasm linux gcc,vs+msys2+yasm 编译libx264+ffmpeg详细解释(32位或64位)
  14. 基于SpringBoot的QQ邮箱登录注册
  15. VmodCAM图像采集 VGA显示
  16. 2022云计算真题:日志分析服务
  17. SDUTOJ 2178 - 链表的有序集合
  18. 11广义表的基本概念和性质
  19. 深度学习目标检测方法综述
  20. mysql y m d h i_php时间问题?mysql数据库的时间格式(Y-M-D H:I:S) 在PHP页面想这样显示(Y-M-D) (apos;.#36;rows[apos;ndate...

热门文章

  1. STM8S105系列单片机管脚复用配置(选项字节的配置)
  2. 进程间通信(4) 匿名管道
  3. 深入解析 Kubebuilder:让编写 CRD 变得更简单
  4. 【Opencv实战】“一岁年龄一岁心,匆匆岁月不由人“这款年龄检测机等你来(附源码)
  5. armv9的RME简介
  6. irq domain介绍和代码导读
  7. OPENFILENAME文件类型过滤 lpstrFilter
  8. 静态反调试技术(1)
  9. IDA Pro7.0使用技巧总结使用
  10. 002 PECompact 1.84