springboot 热部署

本文介绍如何使用spring-boot-devtools模块实现Spring Boot应用的热部署,包括页面、类文件及属性文件的热更新,详细步骤涉及插件配置、IDEA设置及浏览器缓存禁用等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

spring为开发者提供了一个名为spring-boot-devtools的模块来使Spring Boot应用支持热部署,提高开发者的开发效率,无需手动重启Spring Boot应用。

devtools的原理

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


说明:

(1)devtools可以实现页面热部署(即页面修改后会立即生效,这个可以直接在application.properties文件中配置spring.thymeleaf.cache=false来实现),
实现类文件热部署(类文件修改后不会立即生效),实现对属性文件的热部署。
即devtools会监听classpath下的文件变动,并且会立即重启应用(发生在保存时机),注意:因为其采用的虚拟机机制,该项重启是很快的

(2)配置了后在修改java文件后也就支持了热启动,不过这种方式是属于项目重启(速度比较快的项目重启),会清空session中的值,也就是如果有用户登陆的话,项目重启后需要重新登陆。


PS:

这样配置完过后确实能够做到热部署,但是也有一些确定,1.项目较大之后,并没有节省多少时间,相反,每次修改代码都会自动重启,反而有些鸡肋。2.如果修改jar包之类的,也会比较麻烦。

当然这个功能是好的,我会继续优化。有好的方法之后会继续更新。大家有好的方案也可以提出来。


第一步:引入热加载的插件,springboot 1.3开始就有的

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <optional>true</optional>
        </dependency>
  • 1
  • 2
  • 3
  • 4
  • 5

project 中添加spring-boot-maven-plugin,主要在eclipse中起作用,idea不需要加此配置,springboot 项目的话,应该是有此配置,加里面的内容即可。

<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <fork>true</fork>
                </configuration>
            </plugin>
        </plugins>
</build>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

第二部 : idea设置(14版本) 
1、点击: file ,Settings ,Build ,Execution,Deplment 

然后记得apply,ok。 
2、组合键:Shift+ALT+Ctrl+/ ,选择“Registry”,回车,找到“complier.automake.allow.when.app.running” 

注意:

因为我的idea是14版本,有的15版本或者是更高的在compiler 里面是这样的: 
 
,然后快捷键是Ctrl + Shift +A ,一样找到complier.automake.allow.when.app.running,点击勾选即可。

第三部: 如果你用的浏览器和我的一样,那么就禁用缓存 
按F12(更多工具—->开发者工具),找到network,勾选Disable Cache。

亲测有效。 
另外,如果是eclipse的话,直接在pom.xml文件当中添加:

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <optional>true</optional>
        </dependency>
  • 1
  • 2
  • 3
  • 4
  • 5

参考:https://blog.youkuaiyun.com/qq_26346457/article/details/78819866

https://www.cnblogs.com/lspz/p/6832358.html


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值