常用工具类之spring-boot-devtools热部署

news2024/12/23 9:00:47

SpringBoot热部署

        热部署不会用在生产环境,但对于程序员开发的效率,还是有一定帮助的,所谓的热部署,就是在应用程序在不停止的情况下,实现新的部署

        spring-boot-devtools 是一个为开发者服务的一个模块,其中最重要的功能就是自动应用代码更改到最新的App上面去。原理是在发现代码有更改之后,重新启动应用,但是速度比手动停止后再启动还要更快,更快指的不是节省出来的手工操作的时间。

        其深层原理是使用了两个ClassLoader,一个Classloader加载那些不会改变的类(第三方Jar包),另一个ClassLoader加载会更改的类,称为 restart ClassLoader ,这样在有代码更改的时候,原来的restart ClassLoader 被丢弃,重新创建一个restart ClassLoader,由于需要加载的类相比较少,所以实现了较快的重启时间

spring-boot-devtools 介绍

        spring-boot-devtools 是一个为开发者服务的模块,可以实现 Spring Boot 热部署,其中最重要的功能就是自动将应用代码更改到最新的 App 上面去。
        spring-boot-devtools 可以实现页面热部署,实现类文件热部署(类文件修改后不会立即生效),实现对属性配置文件的热部署。其原理是 spring-boot-devtools 会监听 Classpath 下的文件变动,并且会立即重启应用(发生在保存时机)。
        由于采用的虚拟机机制,重启的时候只是加载了在开发的 Class,没有重新加载第三方的 JAR 包,所以重启是很快的。

pom.xml

        如果你是使用eclipse,请忽略,但如果你是使用IDEA,由于idea 没有保存修改的,也就是说在idea中并不会因为你ctrl+s 就重新编译代码。那么就需要额外的配置

在pom文件中,增加编译插件,让代码有变动的时候也编译

<!--热部署依赖-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <optional>true</optional>
 </dependency>

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <!--没有该项配置,热部署不会起作用-->
    <configuration>
        <fork>true</fork>
    </configuration>
 </plugin>

配置文件

application.properties
# 页面修改后立即生效,关闭缓存,立即刷新
spring.thymeleaf.cache=false
# 热部署生效
spring.devtools.restart.enabled=true
# 设置需要重启的目录
spring.devtools.restart.additional-paths=src/main/java
# 设置不需要重启的目录
spring.devtools.restart.exclude=static/**,public/**,WEB-INF/**
# 为 mybatis 设置,生产环境可删除
# restart.include.mapper=/mapper-[\\w-\\.]+jar
# restart.include.pagehelper=/pagehelper-[\\w-\\.]+jar

设置 IDEA 环境自动编译
在编译器选项中勾选 Build project automatically 选项image-20220127015835107

 使用快捷键:Ctrl + Alt + Shift + / 调出 Registry 窗口,勾选 compiler.automake.allow.when.app.running 和 decompiler.use.line.mapping 选项
不同版本可能没有 compiler.automake.allow.when.app.running 选项, 忽略image-20220127015946644

测试class和模板引擎的配置文件修改都会生效, 需要重新编译
手动:修改完代码,按快捷键Ctrl+F9,手动构建项目,或者只修改单个类文件的话,按Ctrl+Shift+F9,重新编译该类文件,即可触发重启服务。
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/64555.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JAVA小区门户网站(源代码+论文)

小区门户网站之社区共享 摘 要 随着计算机的不断发展和广泛应用&#xff0c;人们的工作效率得到不断的提高。互联网的发展&#xff0c;更是缩短了人们之间的距离。如何充分利用互联网&#xff0c;这是大家共同关心的问题。本文主要介绍了关于小区门户网站之社区共享的实现方法…

【GD32F427开发板试用】IAR flash loader 下载GD32F427流程简要分析

本篇文章来自极术社区与兆易创新组织的GD32F427开发板评测活动&#xff0c;更多开发板试用活动请关注极术社区网站。作者&#xff1a;andeyqi 很高兴获的社区的GD32F427开发板的评测机会&#xff0c;这几年芯片慌大家都能感受到&#xff0c;项目上经常因为货源紧张不断更换替代…

java面向对象 继承 多态

目录 继承性(inheritance) 为什么要有继承&#xff1f; 作用&#xff1a; 继承举例 方法的重写 重写举例 四种访问权限修饰符 关键字—super 关键字super举例 调用父类的构造器 调用父类构造器举例 子类对象的实例化过程 多态性 概念 使用 多态性应用举例 虚…

探花交友_第6章_圈子互动(新版)

探花交友_第6章_圈子互动&#xff08;新版&#xff09; 文章目录探花交友_第6章_圈子互动&#xff08;新版&#xff09;课程说明1. 动态查询1.1 查询好友动态1.1.1 接口文档1.1.2 代码步骤1.1.3 代码实现tanhua-app-server**MovementController****MovementService**tanhua-dub…

centos7磁盘挂载及目录扩容

centos7磁盘挂载及目录扩容1. Linux文件系统介绍1.1 ext21.2 ext41.3 xfs2. 查看磁盘现状2.1 查看硬盘情况2.2 查看磁盘挂载情况3. 磁盘挂载3.1 mount挂载3.2 通过UUID来进行挂载4. 目录扩容5. 参考资料项目申请的服务器资源&#xff0c;初始化阶段&#xff0c;运维人员未及时考…

ES 8.x 新特性:match_phrase 跨值查询中 position_increment_gap 参数用法

文章目录1、概述2、match_phrase 短语搜索3、跨值访问3.1 问题演示3.2 原因3.3 解决方案3.4 position_increment_gap 参数1、概述 在 ES 中进行短语搜索的时候&#xff0c;为了防止跨值访问&#xff0c;ES 会在每个值之间设置间隙&#xff0c;而这个间隙的默认大小为 100。而这…

【密码学篇】商用密码产品的密钥体系结构小结

【密码学篇】商用密码产品的密钥体系结构小结 商用密码产品的密钥体系结构笔记小结—【蘇小沐】 文章目录【密码学篇】商用密码产品的密钥体系结构小结1.商用密码产品密钥体系结构&#xff08;一&#xff09;服务器密码机密钥体系结构1.服务器密码机密钥体系结构2.服务器密码机…

MySQL 数据库 定义参数【连接查询】

目录 内连接查询&#xff08;inner join&#xff09; 左连接查询 left join 右连接 right join 全连接、合并查询 union 内连接查询&#xff08;inner join&#xff09; 关键字&#xff1a;inner join on 语句&#xff1a;select * from 表名 inner join 表名 on 条件…

Excel

单元格格式 &#xff0c;跨列居中&#xff0c; 自动换行 尽量不要使用合并单元格&#xff0c;因为会使得一些单元格无法访问&#xff0c;影响排序&#xff0c;筛选等功能 第四季度销售数据部门类别十月十一月十二月肉类牛肉90000110000120000烘焙品甜点2500080000120000农产品…

基于JAVA的网络通讯系统设计与实现(论文+系统)

&#xff08;2009届&#xff09; 本科生毕业设计&#xff08;论文&#xff09; 基于Java的网络通信系统设计与实现 学 院、系&#xff1a;计算机与通信学院专 业&#xff1a;通信工程学 生 姓 名&#xff1a;班 级&#xff1a;学号指导教师姓名&#xff1a;职称最终评定成绩…

jest在已有项目中的安装与使用

简单的jest使用配置&#xff1a; npm init -y npm i jest24.8.0 -Dnpx jest --init 生成初始化配置 一个index文件&#xff0c;里面可以写入一些方法&#xff0c;作为测试这个jest.config.js是自动生成的&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; index.…

第二十五章《图书管理系统》第1节:图书管理系统简介

图书管理系统具有图书信息管理、读者信息管理和借阅信息管理三大功能模块,本小节将从软件功能、数据库系统设计和项目结构几个方面介绍该软件系统的设计方案。 25.1.1系统功能简介 图书管理系统第一大功能模块是图书信息管理,这个模块的软件界面如图25-1所示。 图25-1图书信…

2011-2019年全国30省绿色经济发展指数和子指数数据

2011-2019年全国30省绿色经济发展指数和子指数数据 1、时间&#xff1a;2011-2019年 2、来源&#xff1a;绿色发展指数BG——区域比较 3、范围&#xff1a;包括全国30个省份不包括西藏 4、指标包括&#xff1a;总指标—绿色化指数、经济增长绿化度指数、资源环境承载潜力指…

1.4 Apache Hadoop完全分布式集群搭建-hadoop-最全最完整的保姆级的java大数据学习资料

文章目录1.4 Apache Hadoop 完全分布式集群搭建1.4.1 虚拟机环境准备1.4.2 集群规划1.4.3 安装Hadoop1.4.3.1 集群配置1.4.3.1.1 HDFS集群配置1.4.3.1.2 MapReduce集群配置1.4.3.1.3 Yarn集群配置1.4.3.2 分发配置1.4.4 启动集群1.4.4.1 单节点启动1.4.4.2 集群群起1.4.4.3 Had…

3D目标检测总结

3D目标检测最主要的应用领域是自动驾驶&#xff0c;主流用的传感器是camera和lidar&#xff0c; 一般车上也会配备很多radar&#xff0c; 但是在检测中一般很少用到radar。 除了特斯拉坚决不用lidar&#xff0c; 只基于纯视觉做自动驾驶感知&#xff0c; 大多数的自动驾驶感知…

Java---网络编程

特点&#xff1a;数据被限制在64kb以内&#xff0c;超出这个范围就不能发送了。 数据报(Datagram)&#xff1a;网络传输的基本单位 。 TCP 传输控制协议 (Transmission Control Protocol)。TCP协议是面向连接的通信协议&#xff0c;即传输数据之前&#xff0c;在发送端和接收…

联邦学习论文分析1----联邦学习_功率分配_频带分配_传输速率_能耗

目录一、文章概述二、系统模型环境三、上行链路功率分配(UPA)算法1.系统目标2.约束条件3.公式推导(1)传输时间(2)系统能耗4.算法求解5.伪代码四、频带分配(BA)算法1.系统目标2.约束条件3.算法求解五、性能表征本文是对论文《Multi-Server Federated Edge Learning for Low Powe…

[附源码]JAVA毕业设计南京传媒学院门户网(系统+LW)

[附源码]JAVA毕业设计南京传媒学院门户网&#xff08;系统LW&#xff09; 项目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技…

【计算机网络】数据链路层:虚拟局域网

以太网包含的计算机太多时&#xff0c;带来问题&#xff1a; &#xff08;1&#xff09;广播风暴 一个以太网是一个广播域&#xff08;广播域中任何一台设备发出的广播通信都能被该部分网络中的其他所有设备所接收&#xff09; 在交换机的交换表的建立过程中要使用许多广播域…

如何使用css美化网页?

转自&#xff1a;微点阅读 https://www.weidianyuedu.com 相信大家通过上一篇文章的学习已经成功的创建了自己的第一个网页。虽然只有一句话&#xff0c;但这个仍然是一个网页。但是我相信你&#xff0c;一定觉得这个页面不好看&#xff0c;想自己美化一下&#xff0c;今天就可…