SpringBoot:模块探究之spring-boot-devtools

news/2024/10/30 23:21:29/

Spring Boot 使我们能够快速设置和运行服务。为了进一步增强开发体验,Spring 发布了 spring-boot-devtools 工具——作为 Spring Boot-1.3 的一部分

spring-boot-devtools 是 Spring Boot 提供的一组开发工具,可以提高开发者的工作效率,开发者可以将该模块包含在任何项目中,spring-boot-devtools 最方便的地方莫过于热部署了。

~

本篇内容包括:spring-boot-devtools 模块介绍、SpringBoot devtools 实战


文章目录

    • 一、spring-boot-devtools 模块介绍
        • 1、关于 spring-boot-devtools
        • 2、关于热部署
    • 二、SpringBoot devtools 实战
        • 1、在项目中添加 Spring-Boot-Devtools
        • 2、手动编译
        • 3、自定义监控资源
        • 4、关闭自动重启功能


一、spring-boot-devtools 模块介绍

1、关于 spring-boot-devtools

Spring Boot 使我们能够快速设置和运行服务。为了进一步增强开发体验,Spring 发布了 spring-boot-devtools 工具——作为 Spring Boot-1.3 的一部分

spring-boot-devtools 是 Spring Boot 提供的一组开发工具,可以提高开发者的工作效率,开发者可以将该模块包含在任何项目中,spring-boot-devtools 最方便的地方莫过于热部署了。

2、关于热部署

热部署一般是指,开发过程中使用开发者不想因为修改内容后重启服务浪费大量的时间,而是希望修改代码后能够快速加载自己修改的方法或者类。节省开发时间,为开发者提供改好的开发体验。

SpringBoot devtools实现 热部署说明:

  • spring-boot-devtools 热部署是对修改的类和配置文件进行重新加载,所以在重新加载的过程中会看到项目启动的过程,其本质上只是对修改类和配置文件的重新加载,所以速度极快;
  • spring-boot-devtools 对于前端使用模板引擎的项目,能够自动禁用缓存,在页面修改后,只需要刷新浏览器器页面即可;
  • Idea 监测到项目 runninng 或者 debuging 会停用自动编译,所以还需要手动biild [Ctrl + F9] 或者 [ctrl + b]

二、SpringBoot devtools 实战

1、在项目中添加 Spring-Boot-Devtools

# 在 pom.xml 文件中添加 Maven 依赖:

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

optional 选项,是为了防止将 devtools 依赖传递到其他模块中。当开发者将应用打包运行后,devtools 会被自动禁用。spring-boot-devtools 默认将只在开发环境生效,通过 Spring Boot 插件打包时默认是不会包含 spring-boot-devtools。

2、手动编译

当开发者将 spring-boot-devtools 引入项目后,只要 classpath 路径下发生变化,项目就会自动重启,这极大地提高了项目的开发速度。

  • 如果开发者使用 Eclipse ,那么在修改完代码并保存之后,项目将自动编译井触发重启,而
  • 如果开发者使用 IntelliJ IDEA 默认情况下,需要开发者手动编译才会触发重启。手动编译时,单击 Build -> Build Project 菜单或者按 Ctrl+F9 快捷键进行编译,编译成功后就会触发项目重启。当然,使用 IntelliJ IDEA 开发者也可以配置项目自动编译

# 单击 File -> settings 菜单,打开 settings 页面,在左边的菜单栏依次找到 Build,Execution,Deployment -> Compile,勾选 Build project automatically :

在这里插入图片描述

# 按住 Ctrl+Shift+Alt+/ 快捷捷键调出 Maintenance 页面

# 选择 Registry,在新打开的 Registry 页面中,勾选compiler.automake.allow.when.app.running 复选框。配置完成后,若开发者修改了代码则将会自动重启。

在这里插入图片描述

Ps:classpath 路径下的静态资源或者视图模板等发生变化时,并不会导致项目重启。

3、自定义监控资源

默认情况下,/META-INF/maven、/MET A-INF/resources、/resources、/static 、/public 以及 /templates 位置下资源的变化并不会触发重启,如果开发者想要对这些位置进行重定义 ,在 application.properties 中添加如下配置即可:

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

这表示从默认的不触发重启的目录中除去 static 目录,即 classpat:static 目录下的资源发生变化时也会导致项目 重启。用户也可以反向配置需要监控的目录,配置方式如下:

spring.devtools.restart.additional-exclude=src/main/resources/static

这个配置表示当 src/main/resources/static 目录下的文件发生变化时,自动重启项目。

由于项目的编码过程是一个连续的过程,并不是每修改一行代码就要重启项目,这样不仅浪费电脑性能,而且没有实际意义。鉴于这种情况,开发者也可以考虑使用触发文件,触发文件是个特殊的文件,当这个文件发生变化时项目就会重启,配置方式如下:

spring.devtools.restart.trigger-file=.trigger-file

在项目 resources 目录下新建一个名为 .trigger-file 的文件,此时当开发者修改代码时,默认情况下项目不会重启,需要项目重启时,开发者只需要修改 .trigger-file 文件即可,但是注意,如果项目没有改变,只是单纯地改变了 .trigger-file 文件,那么项目不会重启。

4、关闭自动重启功能

如果开发者添加了 spring-boot-devtools 模块但是不想使用自动重启特性,那么可以关闭自动重启。

spring.devtools.restart.enabled=false

http://www.ppmy.cn/news/6052.html

相关文章

Simulink代码生成: Switch模块及其代码

本文描述Switch模块的建模并研究生成的代码。 文章目录1 Simulink中的Switch模块2 Switch模块建模及代码生成3 Switch模块其他用法3.1 多重Switch3.2 通过标定量Switch4 总结1 Simulink中的Switch模块 在Simulink中Switch模块时非常常见的&#xff0c;通常用于根据一定地条件选…

漏洞扫描的应用范围和场景

漏洞扫描服务范围 安全漏洞扫描服务可以为客户提供包括网络设备、操作系统、数据库、常见应用服务器以及WEB应用等范围的扫描。 漏洞扫描的详细服务范围如下&#xff1a; 操作系统 Windows、发行版Linux、AIX、UNIX通用、Solaris、FreeBSD、HP-UX、BSD等主流操作系统。 数据…

leetcode997. 找到小镇的法官,同样的思路,被佬的操作秀到了_图篇

题目 小镇里有 n 个人&#xff0c;按从 1 到 n 的顺序编号。传言称&#xff0c;这些人中有一个暗地里是小镇法官。 如果小镇法官真的存在&#xff0c;那么&#xff1a; 小镇法官不会信任任何人。 每个人&#xff08;除了小镇法官&#xff09;都信任这位小镇法官。 只有一个人…

C#个人珍藏基础类库分享 — 9、基本排序算法类SortHelper

做.NET开发的同学&#xff0c;一套简单易用的基础类库是必不可少的&#xff0c;这里把我混迹C#圈子十余载珍藏的类库分享出来&#xff0c;希望能够给刚踏入开发门槛的朋友一些帮助。 后续会逐步分享基础库的其余部分&#xff0c;先列个大纲&#xff1a; C#个人珍藏基础类库分享…

【栈与队列】——栈的实现及应用

目录概念栈的实现初始化栈入栈出栈获取栈顶元素获取栈中有效元素个数判断栈是否为空栈的销毁栈的应用概念 栈 栈是一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶&#xff0c;另一端称为栈底栈中的数据元素遵…

Java守护线程简述

Java守护线程简述前言前置知识线程JVM退出代码测试查看子线程是否继承父线程的类型守护线程在程序退出时的表现普通线程在程序退出时的表现总结前言 最近再看《Java并发编程实战》&#xff0c;正好有一小节关于守护线程的知识&#xff0c;这里做一点小总结。 前置知识 这里只…

圣诞节学算法---线段树

线段树 快到圣诞节了&#xff0c;圣诞树是不是很漂亮&#xff1f;今天我们就来学习一下它的近亲的线段树 (话说这两玩意好像除了读音相似没啥关系) 引入 例题 1 给定一个数组 aaa 求数组中下标为l−rl - rl−r元素的和 看到这题大家都很容易想到用前缀和以O(n)O(n)O(n)预处…

聊聊首次使用航顺HK32F030C8T6的体验

先说结论&#xff0c;项目基本上开发测试完成了,mcu运行正常。 这个项目是一个智能家居的项目&#xff0c;主板和副板都使用了HK32F030C8T6&#xff0c;这也是笔者第一次使用航顺的芯片。 关于这个芯片的资料&#xff0c;从官网只能下载到datasheet和user mannal的pdf文档&am…