`

SpringBoot配置devtools实现热部署

 
阅读更多

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

devtools的原理

深层原理是使用了两个ClassLoader,一个Classloader加载那些不会改变的类(第三方Jar包),另一个ClassLoader加载会更改的类,称为restart ClassLoader,这样在有代码更改的时候,原来的restart ClassLoader 被丢弃,重新创建一个restart ClassLoader,由于需要加载的类相比较少,所以实现了较快的重启时间。

使用需要添加以下的配置:

<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <build>

<plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <fork>true</fork> </configuration> </plugin> </plugins> </build>

 

说明:

(1) devtools可以实现页面热部署(即页面修改后会立即生效,这个可以直接在application.properties文件中配置spring.thymeleaf.cache=false来实现),
实现类文件热部署(类文件修改后不会立即生效),实现对属性文件的热部署。(需要重新编译,页面才能实时生效
即devtools会监听classpath下的文件变动,并且会立即重启应用(发生在保存时机),注意:因为其采用的虚拟机机制,该项重启是很快的
(2)配置了后在修改java文件后也就支持了热启动,不过这种方式是属于项目重启(速度比较快的项目重启),会清空session中的值,也就是如果有用户登陆的话,项目重启后需要重新登陆。

默认情况下,/META-INF/maven,/META-INF/resources,/resources,/static,/templates,/public这些文件夹下的文件修改不会使应用重启,但是会重新加载(devtools内嵌了一个LiveReload server,当资源发生改变时,浏览器刷新)。

devtools的配置

 

在application.properties中配置spring.devtools.restart.enabled=false,此时restart类加载器还会初始化,但不会监视文件更新。
在SprintApplication.run之前调用System.setProperty(“spring.devtools.restart.enabled”, “false”);可以完全关闭重启支持

IDEA配置

 

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

 

 

 

分享到:
评论

相关推荐

    详解SpringBoot配置devtools实现热部署

    本篇文章主要介绍了详解SpringBoot配置devtools实现热部署 ,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    SpringBoot项目如何实现热部署.pdf

    通过添加devtools和修改pom文件插件以及修改编译器的环境变量的配置来实现SpringBoot项目的自动热部署,以便快速开发

    Springboot项目基于Devtools实现热部署步骤详解

    主要介绍了Springboot项目基于Devtools实现热部署,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    [ SpringBoot ] 使用 devtools 进行热部署

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

    sping boot 实战视频教程(百度云+源码+视频)

    05、springboot + devtools(热部署)_标清.flv 06、Spring Boot JPAHibernateSpring Data概念_标清.flv 07、Spring Boot JPA-Hibernate_标清.flv 08、Spring Boot Spring Data JPA介绍_标清.flv 09、Spring ...

    Spring Boot 配置 IDEA和DevTools 热部署的方法

    主要介绍了Spring Boot 配置 IDEA和DevTools 热部署的方法,需要的朋友可以参考下

    Spring boot实现热部署的两种方式详解

    主要介绍了Spring boot实现热部署的两种方式,这两种方法分别是使用 Spring Loaded和使用spring-boot-devtools进行热部署,文中给出了详细示例代码和介绍,需要的朋友可以参考学习,下面来一起看看吧。

    SpringBoot新手学习手册

    8.1 什么是热部署 37 8.2 项目演示案例 37 8.3 热部署原理 37 8.4 Devtools依赖 38 8.5 Devtools原理 38 九、 监控管理 38 Actuator监控应用 38 Maven依赖 38 YML配置 39 Actuator访问路径 40 Admin-UI...

    springboot篇】十一. springboot热部署两种方式

    springboot热部署两种方式 中国加油,武汉加油! 项目准备 随便新建一个springboot项目 1. 自动热部署 1.1 导相关依赖 org.springframework.boot spring-boot-devtools 1.2 插件配置 true org.spring...

    SpringBoot2.0实战教程

    5.Web开发(静态资源映射、模板引擎Thymeleaf、热部署devtools) 6.扩展SpringMVC功能、全局异常处理 7.注册Servlet组件、配置外部的Servlet容器 8.SpringBoot数据访问(JDBC、MyBatis、Mybatis-Plus) 9.SpringBoot...

    springboot旅游网站

    基于springboot2.2.6稳定版开发的旅游网站,开发工具为idea2019,数据库使用的mysql5.7,数据库连接池菜哦采用druid,数据库框架采用mybatis,java版本使用的jdk1.7,引入了spring-boot-devtools热部署插件便于开发过程...

    JavaEE开发的颠覆者SpringBoot实战[完整版].part2

    10.1.1 模板热部署 407 10.1.2 Spring Loaded 407 10.1.3 JRebel 409 10.1.4 spring-boot-devtools 413 10.2 常规部署 413 10.2.1 jar 形式 413 10.2.2 war 形式 417 10.3 云部署——基于Docker 的部署 419 10.3.1 ...

    JavaEE开发的颠覆者SpringBoot实战[完整版].part1

    10.1.1 模板热部署 407 10.1.2 Spring Loaded 407 10.1.3 JRebel 409 10.1.4 spring-boot-devtools 413 10.2 常规部署 413 10.2.1 jar 形式 413 10.2.2 war 形式 417 10.3 云部署——基于Docker 的部署 419 10.3.1 ...

    JavaEE开发的颠覆者SpringBoot实战[完整版].part3

    10.1.1 模板热部署 407 10.1.2 Spring Loaded 407 10.1.3 JRebel 409 10.1.4 spring-boot-devtools 413 10.2 常规部署 413 10.2.1 jar 形式 413 10.2.2 war 形式 417 10.3 云部署——基于Docker 的部署 419 10.3.1 ...

    thymeleaf_test:springBoot+thymeleaf的乐糕糕点网站

    spring boot 热部署配置  pom &lt;!-- 热部署模块 --&gt; &lt;groupId&gt;org.springframework.boot &lt;artifactId&gt;spring-boot-devtools &lt;optional&gt;true&lt;/optional&gt; &lt;!-- 这个需要为 true 热部署才有效 --&gt;

    topfox快速开发框架

    支持devtools/jrebel热部署 热加载 支持在不使用devtools/jrebel的情况下, 热加载 mybatis的mapper文件 内置全局、局部拦截插件:提供delete、update 自定义拦截功能 拥有预防Sql注入攻击功能 无缝支持spring cloud:...

    word源码java-springboot2.0:springboot2.0、Mybatis-Plus、encache

    1、热部署: org.springframework.boot spring-boot-devtools true idea默认是没有自动编译的,我们这里需要添加修改配置.打开设置 (1)File-Settings-Compiler-Build Project automatically (2)ctrl + shift +...

    bootdemo:SpringBoot的学习项目笔记.后面不断中

    热部署的配置使用和原理的了解.devtools 2. Markdown的语法和基本使用,以及编写接口文档.引用的使用.粗体和斜体的使用.**,可以嵌入Html标签. 3. 采用Tomcat的独立部署和FastJson来解析Json数据,打包的方式为war包,...

    topfox快速开发平台例子 topfox-sample.zip

    - **支持devtools/jrebel热部署** - **热加载** 支持在不使用devtools/jrebel的情况下, 热加载 mybatis的mapper文件 - 内置全局、局部拦截插件:提供delete、update 自定义拦截功能 - **拥有预防Sql注入攻击功能** -...

    SpringAll_wuyouzhuguli.tar.gz

    Spring Boot Devtools热部署 Spring Boot logback日志配置 Spring Boot项目打包成war包 Linux下部署Spring Boot jar Spring Boot中使用Jsoup防御XSS攻击 Spring Boot异常处理 Spring Boot中使用过滤器和拦截器 ...

Global site tag (gtag.js) - Google Analytics