SpringBoot项目在IntelliJ IDEA中实现热部署

2023-05-16

spring-boot-devtools是一个为开发者服务的一个模块,其中最重要的功能就是自动应用代码更改到最新的App上面去。
原理是在发现代码有更改之后,重新启动应用,但是速度比手动停止后再启动更快。
其深层原理是使用了两个ClassLoader,一个Classloader加载那些不会改变的类(第三方Jar包),另一个ClassLoader加载会更改的类,称为restart ClassLoader
,这样在有代码更改的时候,原来的restart ClassLoader被丢弃,重新创建一个restart ClassLoader,由于需要加载的类相比较少,所以实现了较快的重启时间。

即devtools会监听classpath下的文件变动,并且会立即重启应用(发生在保存时机)

一、开启idea自动make功能 

1、CTRL + SHIFT + A –> 查找make project automatically –> 选中 

2、CTRL + SHIFT + A –> 查找Registry –> 找到并勾选compiler.automake.allow.when.app.running 

最后重启idea 

二、使用spring-boot-1.3开始有的热部署功能 
1、加maven依赖


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

2、开启热部署


<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <fork>true</fork>//该配置必须
            </configuration>
        </plugin>
    </plugins>
</build>  

三、Chrome禁用缓存 
F12(或Ctrl+Shift+J或Ctrl+Shift+I)–> NetWork –> Disable Cache(while DevTools is open) 

至此,在idea中就可以愉快的修改代码了,修改后可以及时看到效果,无须手动重启和清除浏览器缓存。

测试方法:
1.修改类–>保存:应用会重启
2.修改配置文件–>保存:应用会重启
3.修改页面–>保存:应用会重启,页面会刷新(原理是将spring.thymeleaf.cache设为false)

不能使用分析:
1.对应的spring-boot版本是否正确,我这里使用的是1.5.3.RELEASE版本;
2.是否加入plugin了,以及属性<fork>true</fork>
3.Intellij IDEA是否开启了Make Project Automatically。
4.如果设置SpringApplication.setRegisterShutdownHook(false),则自动重启将不起作用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SpringBoot项目在IntelliJ IDEA中实现热部署 的相关文章

随机推荐

  • ActiveMQ的简单Topic实现案例

    首先我们在这里要说一下消息中间件中有两个角色 xff0c 生产者Producer与消费者Consumer xff0c 简单理解即使发发送消息者与接收消息者 xff0c 在编写代码之前我们需要将下载到的ActiveMQ压缩包中的activem
  • Java学习之旅--集合的使用(Map集合)

    好几天没有更新了 xff0c 主要是最近正在学习集合 xff0c 让博主有点头大 所以就耽误了 xff1a 现在就来说说集合里的Map集合 xff1a import java span class hljs preprocessor uti
  • CartPole 强化学习详解1 - DQN

    工作中常会接触到强化学习的内容 xff0c 自己以gym环境中的Cartpole为例动手实现一下 xff0c 记录点实现细节 环境 xff1a python 61 3 6 13 xff1b pytorch 61 1 10 2 目录 1 gy
  • Java学习之旅--线程的创建方法

    线程创建的方法一 span class hljs keyword package span com geminno day14 createthread1 span class hljs keyword public span span c
  • select搜索功能实现

    select搜索功能实现 最近在找工作 没时间写博客 现在找到了 就发发工作上的代码吧 xff01 今天我们说说select标签的搜索功能 xff1b 拿到任务时 xff0c 我先想到就是上网找资料 xff0c 最后看到的都是各种jquer
  • Spring源码--IOC容器实现(5)--Bean对象的创建

    前言 Github xff1a https github com yihonglei thinking in spring 在前面文章中分析了容器初始化过程 xff0c 已经建立了一个可以使用的容器 1 xff09 BeanDefiniti
  • Spring Data Jpa之nativeQuery(仅案例

    Spring Data Jpa 默认实现是hibernate xff0c 我们都知道hibernate使用HQL查询 xff08 Hibernate是JPA的实现之一 xff09 xff0c 而不推荐使用sql查询 xff0c 因为这样子就
  • 消息代理RabbitMQ——介绍篇

    1消息队列概述 我们现在生活的是一个信息高质量高可用并且持久的一个时代 xff0c 作为技术开发人员 xff0c 我们造就的代码程序需要有能力以简单并且高效可靠的方式将信息传送给需要的接受者 更为重要的是我们要优化消息传递的方式 xff0c
  • Spring Cloud Stream中文翻译

    Ditmars RELEASE 1 Spring Cloud Stream 介绍 Spring Cloud Stream是一个用于构建消息驱动应用的微服务框架 Spring Cloud Stream基于Spring Boot来构建独立生产级
  • Spring Security Architecture翻译

    Spring Security 架构 本指南是Spring Security的入门 xff0c 致力于深入了解框架设计和基本构建块 虽然仅设计应用程序安全性的基础知识 xff0c 但是这样做可以清除开发人员使用Spring Security
  • Spring Boot and OAuth2翻译

    Spring Boot and OAuth2 本指南将向您展示如何使用OAuth2和Spring Boot构建一个使用 社交登录 功能做各种事情的应用程序示例 它从一个简单的单一提供者单点登录开始 xff0c 并运行一个带有身份验证提供程序
  • 实现线程安全的常见手段

    Thread safety 线程安全是我们设计一个类是必须考虑的问题 xff0c 在一些常用的工具类库上 xff0c 是否线程安全也会作为一个很重要的标注告诉使用者 常见的实现线程安全的手段有哪些呢 xff1f 无状态 即 xff0c 将接
  • 【ROM定制】Android 12 制作『MIUI官改』那点事④修改

    作者 xff1a 小谢 内容 xff1a MIUI官改 的修改 时间 xff1a 2022 10 14 机型 xff1a 小米10 安卓 xff1a Android 12 版本 xff1a V13 0 7 0稳定版 制作 MIUI官改 工具
  • ubuntu(17):ubuntu循环登录/无法进入图形化界面解决方法--因为系统内核版本冲突/不合适

    1 问题排查 2 查找合适内核 3 删除多余内核版本 删除启动项 3 1 删除内核 3 2 删除启动项 这一步没起作用 3 3 修改默认启动内核 参考链接 xff1a 1 问题排查 昨天重装了nvidia显卡驱动 开机后一直循环登录 xff
  • Android Studio targetApi=33 android 13 setAppCacheEnabled/setAppCachePath/setAppCacheMaxSize 报红问题探究

    报红如下 可以看到即使加了Api版本判断依然是报红的 编译后有如下类似错误提示 Launching lib main dart on sdk gphone64 arm64 in debug mode Users dararii Dev fl
  • MATLAB自适应中值滤波代码

    最近数字图像处理课程课后作业 xff0c 要求自己用代码实现自适应中值滤波器 xff0c 虽然很简单 xff0c 但是在网上找了一圈也没有可以直接拿来用的 xff0c 所以就在网上找了一段代码 xff0c 并且自己改了一下 xff0c 能够
  • VNC连接超时

    一 bug截图 二 原因分析 远程连接 远程连接是要提供地址的 xff0c 这里的地址是IP 43 桌面号 xff0c 比如 xff1a 192 168 1 23 2 随后提示你输入密码 xff0c 此密码就是刚才第1个步骤这是的密码 一般
  • WebApi 异常处理解决方案

    C 进阶系列 WebApi 异常处理解决方案 前端开发 waitig 1年前 2017 04 14 238 百度已收录 0评论 阅读目录 一 使用异常筛选器捕获所有异常 二 HttpResponseException自定义异常信息 三 返回
  • springboot applicaton.properties配置多种数据源

    html view plain copy print DB Connection Config DB Type the database of the application mysql sqlserver oracle databaseT
  • SpringBoot项目在IntelliJ IDEA中实现热部署

    spring boot devtools是一个为开发者服务的一个模块 xff0c 其中最重要的功能就是自动应用代码更改到最新的App上面去 原理是在发现代码有更改之后 xff0c 重新启动应用 xff0c 但是速度比手动停止后再启动更快 其