博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
学习Spring Boot:(五)使用 devtools热部署
阅读量:5226 次
发布时间:2019-06-14

本文共 2093 字,大约阅读时间需要 6 分钟。

前言

spring-boot-devtools 是一个为开发者服务的一个模块,其中最重要的功能就是自动应用代码更改到最新的App上面去。原理是在发现代码有更改之后,重新启动应用,但是比速度比手动停止后再启动还要更快,更快指的不是节省出来的手工操作的时间。

其深层原理是使用了两个ClassLoader,一个Classloader加载那些不会改变的类(第三方Jar包),另一个ClassLoader加载会更改的类,称为 restart ClassLoader

,这样在有代码更改的时候,原来的restart ClassLoader 被丢弃,重新创建一个restart ClassLoader,由于需要加载的类相比较少,所以实现了较快的重启时间(5秒以内)。

正文

第一步:添加依赖

org.springframework.boot
spring-boot-devtools
true

第二步:配置spring-boot-maven-plugin

org.springframework.boot
spring-boot-maven-plugin
true

第三步:开启编译器的自动编译

  • Eclipse Project 在运行选项中查看是否开启了Build Automatically,如果没勾上,就选中勾上。Eclipse默认是自动编译的。
  • IDEA 默认在非RUN或DEBUG情况下才会自动编译。因此,我们在启动Spring Boot后,再次修改类的时候不会自动编译的,开启在Run状态自动编译的流程如下:
    1. setting -> build
      springboot-5-1.png
    2. Shift+Ctrl+Alt+/,选择Registry;
    3. 找到下面的选项,勾选上就行了:
      springboot-5-2.png
      我的是已经勾选过了的,所以是蓝颜色的提示,第一次就去找c开头的就可以了。

第四步:运行测试

启动项目,在run dashboard发现有devtools:

springboot-5-3.png
1. 修改类文件,项目重启;
2. 修改配置文件,项目重启。

补充

  1. 如果设置SpringApplication.setRegisterShutdownHook(false),则自动重启将不起作用。
  2. 默认情况下,/META-INF/maven/META-INF/resources/resources/static/templates/public这些文件夹下的文件修改不会使应用重启,但是会重新加载(devtools内嵌了一个LiveReload server,当资源发生改变时,浏览器刷新)。
  3. 如果想改变默认的设置,可以自己设置不重启的目录:spring.devtools.restart.exclude=static/**,public/**,这样的话,就只有这两个目录下的文件修改不会导致restart操作了。
  4. 如果要在保留默认设置的基础上还要添加其他的排除目录:spring.devtools.restart.additional-exclude;
  5. 如果想要使得当非classpath下的文件发生变化时应用得以重启,使用:spring.devtools.restart.additional-paths,这样devtools就会将该目录列入了监听范围。
  6. 设置 spring.devtools.restart.enabled 属性为false,可以关闭自动重启。可以在application.properties中设置,也可以通过设置环境变量的方式。
public static void main(String[] args){    System.setProperty("spring.devtools.restart.enabled","false");    SpringApplication.run(MyApp.class, args);}

参考文章:

转载于:https://www.cnblogs.com/qnight/p/8997503.html

你可能感兴趣的文章
变量名与函数名的命名规范
查看>>
hdu 2066 一个人的旅行
查看>>
经理评分
查看>>
Django REST framework+Vue 打造生鲜超市(八)
查看>>
Hyperledger Fabric CA的命令行用法
查看>>
FastDFS的单点部署
查看>>
spfa 判断负环 (转载)
查看>>
C#并行编程(2):.NET线程池
查看>>
SQL分页查询【转】
查看>>
java计算当前月的第几周,及周的起止日期/月及月的起止日期
查看>>
WebApi 异常处理解决方案
查看>>
c语言杨氏矩阵算法
查看>>
part01.02 泛型与集合:泛型
查看>>
Java后端记录每次接口访问信息和异常信息
查看>>
操作系统
查看>>
Tomcat反带和集群
查看>>
SVG路径path的贝塞尔曲线指令
查看>>
传感器第三次作业
查看>>
find grep使用
查看>>
JavaScript之初步
查看>>