spring-boot-devtools: 免费的热部署工具

简介: spring-boot-devtools: 免费的热部署工具

目录

热部署

spring-boot-devtools

重新启动 vs 重新加载

spring-boot-devtools 使用

maven依赖

yml配置

Idea配置

代码自动编译

运行期间自动编译

Thymeleaf模板引擎

spring-boot-devtools 高级功能

1. 排除资源

2. 监控其他路径

3. LiveReload

4. 远程调试



Jrebel很好用,但是要收费.......


热部署

监听到如果有Class文件改动了,就会创建一个新的ClaassLoader进行加载该文件,经过一系列的过程,最终将结果呈现在我们眼前


spring-boot-devtools

是一个为开发者服务的一个模块,其中最重要的功能就是自动将应用代码更改到最新的App上面去,即在我们改变了一些代码或者配置文件的时候,应用可以自动重启,这在我们开发的时候,非常有用。


重新启动 vs 重新加载

Spring Boot提供的重启技术通过使用两个类加载器来工作。

不改变的类(例如来自第三方jar的类)被加载到base classloader中。

我们正在开发的类会加载到restart classloader中。当应用程序重新启动时,restart classloader将被丢弃并创建一个新类。这种方法意味着应用程序重启通常比"cold starts"快得多,因为基类加载器已经可用并且已经被填充。


spring-boot-devtools 使用

maven依赖

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


yml配置

# Spring
spring:
  devtools:
    restart:
      # 默认为true
      enabled: true 


Idea配置

代码自动编译

File --> Settings --> Compiler --> Build Project automatically


运行期间自动编译

Mac使用快捷键shift+option+command+/,window上的快捷键是Shift+Ctrl+Alt+/,打开Registry,勾选

compiler.automake.allow.when.app.running

 

通过以上的设置就可以在不重启服务的情况下加载html,但如果修改java文件,服务在几秒后会自动重启,如果不希望服务重启需要在application.properties或application.yml中添加spring.devtools.reatart.enable=false


Thymeleaf模板引擎

如果使用Thymeleaf模板引擎,需要把模板默认缓存设置为false

#禁止thymeleaf缓存(建议:开发环境设置为false,生成环境设置为true)
# Spring
spring:
  thymeleaf:
    cache: false


spring-boot-devtools 高级功能

1. 排除资源

某些资源不一定需要在更改时触发重新启动。例如,可以就地编辑Thymeleaf模板。

默认情况下,在改变资源/META-INF/maven,/META-INF/resources,/resources,/static,/public,或 /templates不会触发重启但会触发 重新加载。可以使用spring.devtools.restart.exclude属性来自定义排除的资源。例如,要仅排除/static,/public可以设置以下属性:

spring.devtools.restart.exclude=static/**,public/**


2. 监控其他路径

如上所述,DevTools监控类路径资源的变动,但如果我们想更改不在类路径中的文件时重新启动或重新加载应用程序,该怎么办呢?这是可以使用spring.devtools.restart.additional-paths属性来配置其他路径以监视更改

# Spring
spring:
  devtools:
    restart:
      # 默认为true
      enabled: true
      #排除那个目录的文件不需要restart
      additional-exclude: static/**,public/**
      #添加那个目录的文件需要restart
      additional-paths: src/main/java


3. LiveReload

LiveReload在做前端开发的时候,经常会用到。

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

下面是Chrome的Remote Live Reload插件地址。安装即可拥有这个酷炫的功能。

https://chrome.google.com/webstore/detail/remotelivereload/jlppknnillhjgiengoigajegdpieppei?hl=en-GB

devtools也会在后台开启一个LiveReload Server,浏览器会与这个Server保持着一个长连接,当后端有前端资源变动的时候,将会通知浏览器进行刷新,实现热部署。


4. 远程调试

暂时没用到,后期补充


目录
相关文章
|
17天前
|
Java 开发者 微服务
Spring Boot 入门:简化 Java Web 开发的强大工具
Spring Boot 是一个开源的 Java 基础框架,用于创建独立、生产级别的基于Spring框架的应用程序。它旨在简化Spring应用的初始搭建以及开发过程。
37 6
Spring Boot 入门:简化 Java Web 开发的强大工具
|
2月前
|
Java 测试技术 开发者
springboot学习四:Spring Boot profile多环境配置、devtools热部署
这篇文章主要介绍了如何在Spring Boot中进行多环境配置以及如何整合DevTools实现热部署,以提高开发效率。
98 2
|
2月前
|
Java BI API
spring boot 整合 itextpdf 导出 PDF,写入大文本,写入HTML代码,分析当下导出PDF的几个工具
这篇文章介绍了如何在Spring Boot项目中整合iTextPDF库来导出PDF文件,包括写入大文本和HTML代码,并分析了几种常用的Java PDF导出工具。
568 0
spring boot 整合 itextpdf 导出 PDF,写入大文本,写入HTML代码,分析当下导出PDF的几个工具
|
2月前
|
监控 Java 对象存储
监控与追踪:如何利用Spring Cloud Sleuth和Netflix OSS工具进行微服务调试
监控与追踪:如何利用Spring Cloud Sleuth和Netflix OSS工具进行微服务调试
49 1
|
3月前
|
Java 应用服务中间件 Spring
IDEA 工具 启动 spring boot 的 main 方法报错。已解决
IDEA 工具 启动 spring boot 的 main 方法报错。已解决
|
4月前
|
前端开发 Java 开发者
Spring Boot DevTools 热部署神器,助你在开发浪潮中乘风破浪,一骑绝尘!
【8月更文挑战第29天】在快速迭代的软件开发领域,高效开发至关重要。Spring Boot DevTools 作为一款优秀的热部署工具,可自动重新加载代码修改,无需手动重启应用,大幅节省时间,即时预览修改效果,简化开发流程。通过简单示例,展示了其自动刷新静态资源和模板文件的功能,有效提升了开发效率,使开发者更专注于功能实现。它就像是开发者的得力助手,显著减少等待时间,带来更高效、流畅的开发体验。
48 0
|
4月前
|
安全 Java Spring
Spring Boot 关闭 Actuator ,满足安全工具扫描
Spring Boot 关闭 Actuator ,满足安全工具扫描
571 0
|
6月前
|
前端开发 Java 程序员
Spring Boot (十五): 优雅的使用 API 文档工具 Swagger2
Spring Boot (十五): 优雅的使用 API 文档工具 Swagger2
|
6月前
|
Java API Spring
集成EasyPoi(一个基于POI的Excel导入导出工具)到Spring Boot项目中
集成EasyPoi(一个基于POI的Excel导入导出工具)到Spring Boot项目中
572 1
|
5月前
|
Java 微服务 Spring
微服务04---服务远程调用,根据订单id查询订单功能,根据id查询订单的同时,把订单所属的用户信息一起返回,Spring提供了一个工具RestTemplate,Bean写在对象前面,以后可以在任何地
微服务04---服务远程调用,根据订单id查询订单功能,根据id查询订单的同时,把订单所属的用户信息一起返回,Spring提供了一个工具RestTemplate,Bean写在对象前面,以后可以在任何地