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

作者:winner_0715 时间:2023-10-29 13:30:22 

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 --> 选中

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

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

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

最后重启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)

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

至此,在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),则自动重启将不起作用。

来源:https://www.cnblogs.com/winner-0715/p/6666579.html

标签:SpringBoot,IntelliJ,IDEA,热部署
0
投稿

猜你喜欢

  • 使用JPA主键@Id,@IdClass,@Embeddable,@EmbeddedId问题

    2022-07-07 18:35:41
  • 浅谈mybatis中SQL语句给boolean类型赋值问题

    2023-01-19 15:15:42
  • Android开发笔记之Android中数据的存储方式(二)

    2022-12-04 01:05:55
  • Java设计模式之工厂模式案例详解

    2023-11-27 20:08:03
  • 本地jvm执行flink程序带web ui的操作

    2022-09-03 20:49:00
  • 手把手教你SpringBoot快速集成Swagger的配置过程

    2023-10-30 01:16:22
  • Android实现单选按钮

    2021-11-20 18:32:53
  • Android studio 3.0上进行多渠道打包遇到的问题小结(超简洁版)

    2022-09-16 07:58:40
  • Android中检查、监听电量和充电状态的方法

    2023-05-15 23:23:19
  • spring boot springMVC扩展配置实现解析

    2023-11-25 10:32:53
  • java多线程编程学习(线程间通信)

    2023-04-02 05:25:34
  • 基于序列化存取实现java对象深度克隆的方法详解

    2021-08-31 07:45:26
  • C#实现泛型List分组输出元素的方法

    2022-03-10 07:33:15
  • java实现简单猜数字

    2022-12-31 16:20:02
  • 聊聊Java 中的线程中断

    2021-05-31 02:04:30
  • 解析android中ProgressBar的用法

    2021-07-13 20:38:52
  • c#中返回文章发表的时间差的示例

    2021-08-18 16:51:26
  • Java递归寻路实现,你真的理解了吗

    2022-09-17 02:24:34
  • 使用eclipse创建java项目的方法

    2022-10-15 04:41:00
  • Java中ClassLoader类加载学习总结

    2022-08-26 18:13:42
  • asp之家 软件编程 m.aspxhome.com