美文网首页Spring(Spring MVC/Spring Boot ...)
4.spring-boot-devtools 实现热部署

4.spring-boot-devtools 实现热部署

作者: 小manong | 来源:发表于2018-10-20 15:05 被阅读0次
  • spring-boot-devtools为应用提供一些开发时特性,包括默认值设置,自动重启,livereload等

1.热部署依赖

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

将依赖关系标记为可选<optional>true</optional>是一种最佳做法,可以防止使用项目将devtools传递性地应用于其他模块。

2.重启原理

  • 原理:spring boot使用两个classloader:不改变的类(如第三方jar)由base类加载器加载,正在开发的类由restart类加载器加载。应用重启时,restart类加载器被扔掉重建,而base类加载器不变,这种方法意味着应用程序重新启动通常比“冷启动”快得多,因为base类加载器已经可用并已填充。当我们开启devtools后,classpath中的文件变化会导致应用自动重启
    (ps:Eclipse中保存文件即可引起classpath更新(注:需要打开自动编译),从而触发重启。而IDEA则需要自己手动CTRL+F9重新编译一下)

3.排除静态资源文件

  • 静态资源文件在改变之后有时候没必要触发应用程序重启,例如thymeleaf模板文件就可以实时编辑,默认情况下,更改/META-INF/maven, /META-INF/resources ,/resources ,/static ,/public 或/templates下的资源不会触发重启,而是触发live reload(devtools内嵌了一个LiveReload server,当资源发生改变时,浏览器刷新)
  • 但是如果想完成静态文件变化后,要应用重启那么可以配置如下
spring.devtools.restart.exclude=static/**,public/**
//如果想保留默认配置,同时增加新的配置,则可使用
//spring.devtools.restart.additional-exclude属性

4.使用一个触发文件

若不想每次修改都触发自动重启,可以设置spring.devtools.restart.trigger-file指向某个文件,只有更改这个文件时才触发自动重启。

5.自定义自动重启类加载器

默认时,IDE中打开的项目都会由restart加载器加载,jar文件由Base加载器加载,但是若你使用multi-module的项目,并且不是所有模块都被导入到IDE中,此时会导致加载器不一致。这时你可以创建META-INF/spring-devtools.properties文件,并增加restart.exclude.XXX,restart.include.XXX来配置哪些jar被restart加载,哪些被base加载。如:

restart.include.companycommonlibs=/mycorp-common-[\\w-]+\.jar
restart.include.projectcommon=/mycorp-myproj-[\\w-]+\.jar

参考博文:http://tengj.top/2017/06/01/springboot10/

相关文章

  • 4.spring-boot-devtools 实现热部署

    spring-boot-devtools为应用提供一些开发时特性,包括默认值设置,自动重启,livereload等...

  • Spring Boot 热部署

    什么是热部署 所谓的热部署:比如项目的热部署,就是在应用程序在不停止的情况下,实现新的部署 实现热部署方法 Spr...

  • Spring boot 采用devtools实现热部署

    Spring boot 采用devtools实现热部署 什么是热部署? 热部署,就是在应用正在运行的时候升级软件,...

  • 2019-04-01

    Spring Boot 采用devtools实现热部署:什么是热部署? 热部署,就是在应用正在运行的时候升级软件,...

  • 热部署应用

    Spring boot 采用devtools实现热部署 什么是热部署? 认识spring-boot-devtool...

  • springboot热部署(自动编译项目)

    使用IDEA进行热部署 一共有三种热部署的方式。分别是,《通过配置Tomact实现热部署》,《SpringBoot...

  • Spring Boot部署

    热部署 pom.xml文件中添加spring-boot-devtools依赖即可实现页面和代码的热部署。 常规部署...

  • SpringBoot实现热部署

    在实际开发过程中,每次修改后台代码就必须要重启来保证源代码或者配置文件的生效,特别是当下微服务开发火热,动不动同时...

  • SpringBoot实现热部署

    上一篇 << >> 原理:在发现代码有更改之后,重新启动应用,,不适用于生产环境。深层原理是使用了两个ClassL...

  • Android热修复升级探索——代码修复冷启动方案

    摘要:前面一篇文档, 我们提到热部署修复方案有诸多特点(有关热部署修复方案实现, Android热修复升级探索——...

网友评论

    本文标题:4.spring-boot-devtools 实现热部署

    本文链接:https://www.haomeiwen.com/subject/vtkmzftx.html