devtools模块详解

devtools模块,是为开发者服务的一个模块。主要的功能就是代码修改后一般在5秒之内就会自动重新加载至服务器,相当于restart成功。

简单原理

在发现代码有更改之后,自动重新启动应用,但是其速度比手动停止后再启动还要快些,更快这里指的不是节省出来的手工操作的时间。

底层原理:双类加载器机制

 一个Base ClassLoader加载器,用于加载不会改变的第三方依赖的jar;另一个Restart ClassLoader加载器,用于加载自己编写的类;执行流程:当应用重启后,原先的Restart ClassLoader被丢掉、重新new一个Restart ClassLoader来加载这些修改过的东西,而Base ClassLoader却没有变化。这就是devtools重启速度快的原因。

注意事项

 pom.xml里面plugin不配置fork=true实测也是可以的application.properties需要配置:添加那个目录的文件需要restartspring.devtools.restart.additional-paths=src/main/java

项目图片

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.jege.spring.boot</groupId><artifactId>spring-boot-devtools</artifactId><packaging>war</packaging><version>0.0.1-SNAPSHOT</version><name>spring-boot-mybatis</name><url>http://maven.apache.org</url><!-- 公共spring-boot配置,下面依赖jar文件不用在写版本号 --><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.4.1.RELEASE</version><relativePath /></parent><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><java.version>1.8</java.version></properties><dependencies><!-- web --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- 热部署 --><!-- devtools可以实现页面热部署(即页面修改后会立即生效,这个可以直接在application.properties文件中配置spring.thymeleaf.cache=false来实现) --><!-- 实现类文件热部署(类文件修改后不会立即生效),实现对属性文件的热部署。 --><!-- 即devtools会监听classpath下的文件变动,并且会立即重启应用(发生在保存时机),注意:因为其采用的虚拟机机制,该项重启是很快的 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><!-- optional=true,依赖不会传递,该项目依赖devtools;之后依赖boot项目的项目如果想要使用devtools,需要重新引入 --><optional>true</optional></dependency></dependencies><build><finalName>spring-boot-devtools</finalName><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><!-- 如果没有该项配置,实际测试ok --><!-- <fork>true</fork> --></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>${java.version}</source><target>${java.version}</target></configuration></plugin></plugins></build>
</project>

配置文件application.properties

#添加那个目录的文件需要restart
spring.devtools.restart.additional-paths=src/main/java
#排除那个目录的文件不需要restart
spring.devtools.restart.exclude=static/**,public/**

控制器HelloController

package com.jege.spring.boot.devtools;import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;/*** 看看devtools模块的快速*/
@RestController
public class HelloController {@RequestMapping("/hello")public String hello() {//    System.out.println("test");return "Hello World";}
}

运行结果

运行Application之后,修改HelloController,可以看到快速重启,加载即时生效

扫一扫获益匪浅哟!!!

Spring Boot 热部署 devtools模块相关推荐

  1. spring boot热部署devtools

    1 pom.xml文件 注:热部署功能spring-boot-1.3开始有的 <!--添加依赖--> <dependency><groupId>org.spring ...

  2. IDEA 2018.3版本Spring Boot 热部署

    IDEA 2018.3版本Spring Boot 热部署 看了B站尚硅谷的"尚硅谷SpringCloud框架开发教程(SpringCloudAlibaba微服务分布式架构丨Spring Cl ...

  3. Spring Boot 热部署入门

    转载自  Spring Boot 热部署入门 1. 概述 在日常开发中,我们需要经常修改 Java 代码,手动重启项目,查看修改后的效果.如果在项目小时,重启速度比较快,等待的时间是较短的.但是随着项 ...

  4. Spring Boot热部署

    Spring Boot热部署 在SpringBoot中启用热部署非常简单,因为SpringBoot提供了一个非常方便的工具spring-boot-devtools,只需把这个工具引入到项目里即可. 1 ...

  5. 芋道 Spring Boot 热部署入门

    点击上方"芋道源码",选择"设为星标" 做积极的人,而不是积极废人! 源码精品专栏 原创 | Java 2020 超神之路,很肝~ 中文详细注释的开源项目 RP ...

  6. Spring boot热部署的作用和原理

    Spring boot热部署的作用和原理 前言 一.Spring boot热部署的作用 1.什么是SpringBoot热部署 2.什么项目重启 3.什么静态文件 4.如何使用Spring boot热部 ...

  7. 第二篇:Spring Boot 热部署

    文章目录 1. 依赖 2. 开启实时自动编译 3. 开启运行自动编译开关 1. 依赖 <!-- 热部署DevTools --><dependency><groupId&g ...

  8. Spring Boot + IntelliJ IDEA——自动部署[Spring Boot热部署]+LiveReload[前端自动刷新、热加载]解决方案

    基本概念 spring-boot-devtools: Spring Boot包括一组额外的工具,这些工具可以使应用程序开发体验更加愉快.该spring-boot-devtools模块可以包含在任何项目 ...

  9. SpringBoot资料合集-03【Spring Boot 热部署与日志】

    1.springboot中devtools热部署 2.带你弄清混乱的JAVA日志体系! 3. logback日志的集成 1.springboot中devtools热部署 1.1 引言 为了进一步提高开 ...

最新文章

  1. LinkedList 的作者说他自己都不用 LinkedList?
  2. 北航、旷视联合,打造最强实时语义分割网络
  3. iOS开发之autoLayout constraint
  4. [SDOI2016]生成魔咒
  5. 返回后通知(After Return Advice)
  6. java main test_java调用main自动执行testng方法一
  7. CVPR2020 | 跨模态行人重识别:共享与特异特征变换算法cm-SSFT
  8. [LeetCode] Majority Element II
  9. FPN相关问题学习记录
  10. 13. PHP OPcache
  11. Kubernetes 小白学习笔记(29)--kubernetes云原生应用开发-基于Elasticsearch技术栈搭建Kubernetes的集群Logging设施
  12. 指针数组 | 数组指针
  13. 《算法设计与分析基础》第2版
  14. 霍兰德SE型人格如何选择专业?高考志愿填报选专业
  15. Android实现百度离线地图+gps定位
  16. Neutron的Router简介
  17. 小白神器 - Django - 起步
  18. Redis原生SET、SETNX、SETEX方法以及RedisTemplate的方法 + 分布式锁的实现
  19. Pythont打开 txt 格式的文件
  20. Python_阿基米德浮力问题

热门文章

  1. java重写面试题_Java面试题:重写了equals方法,为什么还要重写hashCode方法?
  2. 打印更无缝:微软改善Win11中通用打印体验
  3. Logback介绍及入门
  4. Module build failed: Error: Cannot find module ‘node-sass‘ Require stack报错解决
  5. js表单提交 php,JavaScript提交表单的几种方法
  6. 03 - 变量的数据类型
  7. 判断链表是否相交并找出交点
  8. php mysql group by_php – 如何在mysql查询中解决“不在GROUP BY中”错误
  9. 下列哪个适合做链栈_朋友圈人格图鉴:三天可见 vs 全部可见,哪个更适合做恋人?...
  10. Maven学习(一)————Maven技术概述