有道无术,术尚可求,有术无道,止于术。
本系列Spring Boot版本2.7.0
Spring Boot 包含一组额外的工具,可以使应用程序开发体验更加愉快。spring-boot-devtools 模块可以包含在任何项目中,以提供额外的开发时功能。其中最重要的就是热部署了。
IDEA(2019.3版本)实现热部署
引入spring-boot-devtools 后,每当类路径上的文件更改时,就会自动重新启动应用程序。
Spring Boot 提供的热部署技术通过使用两个类加载器来工作。不会更改的类(例如,来自第三方 jar 的类)被加载到基类加载器中。您正在开发的类被加载到重新启动类加载器中。当应用程序重新启动时,重新启动类加载器被丢弃并创建一个新的。这种方法意味着应用程序重新启动通常比“冷启动”快得多,因为基类加载器已经可用并已填充。
1. 引入依赖
首先需要将依赖包导入,optional 设置为true,其意思就是其他模块引用该模块时,会排除该依赖。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
2. 手动执行
可以通过点击Build 实现热部署,首先需要点击启动类,然后点击最上方的Build ,选择构建当前模块,如果发现源码有改动,就会快速重启。
3. 自动执行
也可以设置为全自动执行。
按照File ->settings ->Build,Execution,Deployment ->Compile 路径,找到Build project automatically 并勾选,开启自动生成。 按住Ctrl+Shift+Alt+/ 快捷键弹出 Maintenance 页面,点击Registry ,弹出注册表: 勾选compiler.automake.allow.when.app.running ,支持自动重启: 如果是2021版本IDEA,在高级选项中勾选。
4. 测试
修改代码,过个十来秒,就发现应用自动重启了。。。
常用配置项
spring:
devtools:
restart:
log-condition-evaluation-delta: true
exclude: application.yml
additional-exclude:
additional-paths:
enabled: true
实时重载
spring-boot-devtools 模块包括一个嵌入式 LiveReload 服务器,可用于在资源更改时触发浏览器刷新。LiveReload 浏览器扩展插件可从livereload.com免费获得,适用于 Chrome、Firefox 和 Safari浏览器。
如果您不想在应用程序运行时启动 LiveReload 服务器,您可以将该spring.devtools.livereload.enabled 属性设置为false(默认时开启的)。
一次只能运行一个 LiveReload 服务器。在启动您的应用程序之前,请确保没有其他 LiveReload 服务器正在运行。如果您从 IDE 启动多个应用程序,则只有第一个具有 LiveReload 支持。
要在文件更改时触发 LiveReload,必须启用自动重启。
|