spring为开发者提供了一个名为spring-boot-devtools的模块来使Spring Boot应用支持热部署,提高开发者的开发效率,无需手动重启Spring Boot应用。


devtools实现原理:

  • 采用双类加载机制

    - base ClassLoader : 加载第三方jar包(很少修改)

    - restart ClassLoader :加载自己创建的类文件

    应用重启时只需要重新new一个restart ClassLoader即可,加载jar包的base ClassLoader无需加载,所以devtools重启速度很快,提升效率

在pom文件中添加devtools依赖

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<!-- optional=true,依赖不会往下传递,
如果有项目依赖本项目,并且想要使用devtools,需要重新引入 -->
<optional>true</optional>
<scope>runtime</scope>
</dependency>

idea自动编译设置

  • File -> Settings -> Build,Execution,Deplyment -> Compiler,选中打勾 “Build project automatically”
  • Shift+Ctrl+Alt+/ => 选择Registry => 找到“compiler.automake.allow.when.app.running”并选中

tips : 我设置自动编译后,devtools在我修改完文件后反应有点迟缓,经常要在修改过后等个几秒钟才开始自动编译,暂时没找到具体原因,有知道的小伙伴可以在评论区告诉我一下,如果你在设置完后也有这种情况,可以进行手动编译,修改完内容后按 Ctrl+Shift+F9编译文件





说明

  • 页面热部署

在application.properties文件中配置spring.thymeleaf.cache=false(页面修改后会立即生效)

  • 不会重新启动的资源

/META-INF/maven, /META-INF/resources ,/resources ,/static ,/public 或者 /templates 不会触发重新启动, 但会触发实时重新加载。

  • 关闭devtools

在Application中的 SpringApplication.run()方法之前添加System.setProperty("spring.devtools.restart.enabled", "false")

在IDEA上对SpringBoot项目配置Devtools实现热部署的更多相关文章

  1. springboot项目利用devtools实现热部署,改动代码自动生效

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

  2. SpringBoot配置devtools实现热部署

    spring为开发者提供了一个名为spring-boot-devtools的模块来使Spring Boot应用支持热部署,提高开发者的开发效率,无需手动重启Spring Boot应用. devtool ...

  3. Spring Boot 项目在 IntelliJ IDEA 中配置 DevTools 实现热部署(macOS 系统)

    要配置的内容: 1.Preference -> Build, Execution, Deployment -> Complier -> Build project automatic ...

  4. spring-boot 速成(2) devtools之热部署及LiveReload

    JRebel热部署插件相信很多人都知道,但是这是一款商业插件,spring-boot框架也提供了类似的功能,即:devtools,关键是免费的! 使用方法如下: 一.添加 devtools依赖 dep ...

  5. Spring Boot学习笔记-配置devtools实现热部署

    写在前面 Spring为开发者提供了一个名为spring-boot-devtools的模块来使Spring Boot应用支持热部署,提高开发者的开发效率,无需手动重启Spring Boot应用. de ...

  6. idea springBoot 配置devtools实现热部署

    1.pom文件依赖引入 <dependencies> <dependency> <groupId>org.springframework.boot</grou ...

  7. linux安装docker,并在docker上运行springboot项目

    docker架构示例图 仓库---> 镜像 --->  容器 一.安装docker 1.通过 uname -r 命令查看你当前的内核版本 uname -r 2使用 root 权限登录 Ce ...

  8. Springboot项目 配置数据库连接属性后,启动项目报错

    Springboot项目 配置数据库连接属性后,启动项目报错,错误如下: 错误原因分析: 1.连接信息配置错误 当使用properties为配置文件时,如图所示,上面的 spring.datasour ...

  9. springboot项目配置logback日志系统

    记录springboot项目配置logback日志文件管理: logback依赖jar包 SpringBoot项目配置logback理论上需要添加logback-classic依赖jar包: < ...

随机推荐

  1. html 随机验证码

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. Django:缓存及相关配置

    缓存 由于Django是动态网站,所有每次请求均会去数据进行相应的操作,当程序访问量大时,耗时必然会更加明显,最简单解决方式是使用:缓存,缓存将一个某个views的返回值保存至内存或者memcache ...

  3. 如何用JS获取地址栏参数的方法

    采用正则表达式获取地址栏参数: 写一个方法来进行正则匹配,同样也可以复用 function GetPar(name) { var reg = new RegExp("(^|&)&qu ...

  4. Oracle 11g 体系结构概述

    一.Oracle 体系结构主要用来分析数据库的组成.工作过程与原理,以及数据在数据库中的组织与管理机制. Oracle 数据库是一个逻辑概念,而不是物理概念上安装了 Oracle 数据库管理系统的服务 ...

  5. region、xld有对应的字符串时,将region、xld按照行或列排序的算法实现

    用Halcon解码时,如果一张图里面有多个码,它通常可以把这些码都解出来,并且生成对应的解码结果字符串元组(也就是下面的DecodedDataStrings),如果有多个码,那么该元组就有多个元素. ...

  6. robotframework的学习笔记(十八)——RequestsLibrary库的API介绍

    requestsLibrary的关键字不多,常用的就几个. Create Session: 创建一个session,连接某个服务器.Create Ntlm Session: 也是创建一个session ...

  7. K9F1G08U0B K9F2G08U0A K9F2G08U0M

    *L must be set to "Low" Ax表示bit,分5个周期写,一次一个Byte 原理图 引脚定义 命令 Program Erase Read 实验程序 https: ...

  8. Excel内部编码查看与验证工具

    Excel 2007 以前版本 MS-XLS内部结构:BIFF格式 https://docs.microsoft.com/en-us/openspecs/office_file_formats/ms- ...

  9. C/C++ 关于数组和指针的总结

    1.数组的声明形如a[d],其中a是数组的名字,d是数组的维度,编译的时候数组的维度应该是已知的,所以维度d必须是一个常量.如果要定义一个不知道元素个数的以为数组,那么请使用vector容器: uns ...

  10. Python使用numpy进行数据转换

    一.测试数据 二.代码实现 # -*- coding: utf-8 -*- """ Created on Sun Jul 7 11:35:01 2019 加载数据时对指定 ...