热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

springboot系列教程八:devtools热部署

2019独角兽企业重金招聘Python工程师标准springboot能实现热部署的方式有很多种,官方推荐使用devtools热部署,所以在此对其他

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

springboot 能实现热部署的方式有很多种,官方推荐使用 devtools 热部署,所以在此对其他热部署不做介绍

热部署原理

spring-boot-devtools 模块能够实现热部署,添加类、添加方法、修改配置文件、修改页面等都能实现热部署。原理就是重启项目,但比手动重启快多了,其深层原理是使用了两个ClassLoader。一个Classloader加载那些不会改变的类(第三方Jar包),另一个ClassLoader加载会更改的类,称为 restart ClassLoader,这样在有代码更改的时候,原来的 restart ClassLoader 被丢弃,重新创建一个 restart ClassLoader,由于需要加载的类相比较少,所以实现了较快的重启效果

添加依赖

org.springframework.bootspring-boot-devtoolstrueruntime

只要添加依赖,当你改完代码点击如下按钮 build 就会热发布

注意点

  1. 如果使用了 thymeleaf,那一定要配置关闭缓存,否则修改了 html,build 后也看不到效果

spring:thymeleaf:cache: false

  1. 默认情况下,/META-INF/maven,/META-INF/resources,/resources,/static,/templates,/public 这些文件夹下的文件修改不会使应用重启,但是会重新加载(devtools 内嵌了一个 LiveReload Server,当资源发生改变时,浏览器刷新)
  2. 如果想改变默认的设置,可以自己设置不重启的目录:spring.devtools.restart.exclude=static/**,public/**,这样的话,就只有这两个目录下的文件修改不会导致 restart 操作了
  3. 如果要在保留默认设置的基础上还要添加其他的排除目录:spring.devtools.restart.additional-exclude=/目录名
  4. 如果想要使得当非 classpath 下的文件发生变化时应用得以重启,使用:spring.devtools.restart.additional-paths=/目录名,这样 devtools 就会将该目录列入了监听范围

LiveReload Server

spring-boot-devtools 模块包括一个嵌入式 LiveReload 服务器,可用于在更改资源时触发浏览器刷新。LiveReload 浏览器扩展程序可从livereload.com免费用于 Chrome,Firefox 和 Safari

如果您不想在应用程序运行时启动 LiveReload 服务器,则可以将spring.devtools.livereload.enabled属性设置为 false

注意: 您一次只能运行一个 LiveReload 服务器。在启动应用程序之前,请确保没有其他 LiveReload 服务器正在运行。如果从 IDE 启动多个应用程序,则只有第一个具有 LiveReload 支持。 我使用的是火狐浏览器,首先在插件库里搜索并且安装 LiveReload 插件

按照完成后浏览器右上角可以启动插件

此时当我改完 html 文件只需要点击 build 浏览器会自动刷新


转:https://my.oschina.net/zhoumj/blog/3039563



推荐阅读
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • 深入探索HTTP协议的学习与实践
    在初次访问某个网站时,由于本地没有缓存,服务器会返回一个200状态码的响应,并在响应头中设置Etag和Last-Modified等缓存控制字段。这些字段用于后续请求时验证资源是否已更新,从而提高页面加载速度和减少带宽消耗。本文将深入探讨HTTP缓存机制及其在实际应用中的优化策略,帮助读者更好地理解和运用HTTP协议。 ... [详细]
  • 本文整理了一份基础的嵌入式Linux工程师笔试题,涵盖填空题、编程题和简答题,旨在帮助考生更好地准备考试。 ... [详细]
  • 本文介绍了如何使用Python爬取妙笔阁小说网仙侠系列中所有小说的信息,并将其保存为TXT和CSV格式。主要内容包括如何构造请求头以避免被网站封禁,以及如何利用XPath解析HTML并提取所需信息。 ... [详细]
  • Cookie学习小结
    Cookie学习小结 ... [详细]
  • 兆芯X86 CPU架构的演进与现状(国产CPU系列)
    本文详细介绍了兆芯X86 CPU架构的发展历程,从公司成立背景到关键技术授权,再到具体芯片架构的演进,全面解析了兆芯在国产CPU领域的贡献与挑战。 ... [详细]
  • 2020年9月15日,Oracle正式发布了最新的JDK 15版本。本次更新带来了许多新特性,包括隐藏类、EdDSA签名算法、模式匹配、记录类、封闭类和文本块等。 ... [详细]
  • HTTP(HyperTextTransferProtocol)是超文本传输协议的缩写,它用于传送www方式的数据。HTTP协议采用了请求响应模型。客服端向服务器发送一 ... [详细]
  • 用阿里云的免费 SSL 证书让网站从 HTTP 换成 HTTPS
    HTTP协议是不加密传输数据的,也就是用户跟你的网站之间传递数据有可能在途中被截获,破解传递的真实内容,所以使用不加密的HTTP的网站是不 ... [详细]
  • 探讨Redis的最佳应用场景
    本文将深入探讨Redis在不同场景下的最佳应用,包括其优势和适用范围。 ... [详细]
  • 本文详细介绍了如何使用Python中的smtplib库来发送带有附件的邮件,并提供了完整的代码示例。作者:多测师_王sir,时间:2020年5月20日 17:24,微信:15367499889,公司:上海多测师信息有限公司。 ... [详细]
  • DVWA学习笔记系列:深入理解CSRF攻击机制
    DVWA学习笔记系列:深入理解CSRF攻击机制 ... [详细]
  • Git命令基础应用指南
    本指南详细介绍了Git命令的基础应用,包括如何使用`git clone`从远程服务器克隆仓库(例如:`git clone [url/path/repository]`)以及如何克隆本地仓库(例如:`git clone [local/path/repository]`)。此外,还提供了常见的Git操作技巧,帮助开发者高效管理代码版本。 ... [详细]
  • 如何优化MySQL数据库性能以提升查询效率和系统稳定性 ... [详细]
  • 在PHP中实现腾讯云接口签名,以完成人脸核身功能的对接与签名配置时,需要注意将文档中的POST请求改为GET请求。具体步骤包括:使用你的`secretKey`生成签名字符串`$srcStr`,格式为`GET faceid.tencentcloudapi.com?`,确保参数正确拼接,避免因请求方法错误导致的签名问题。此外,还需关注API的其他参数要求,确保请求的完整性和安全性。 ... [详细]
author-avatar
多米音乐_34063629
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有