Spring Boot热部署

Spring Boot热部署

Spring Boot热部署

本文介绍关于idea中spring boot 热部署。

一、类加载器(ClassLoader)

  1. base classloader ,base类加载器,加载不改变的Class,例如第三方提供的jar包;
  2. restart ClassLoader restart 类加载器,加载正在开发的Class,即只加载有变更的Class,所以实现了较快的重启时间;

二、方式

springboot有3中热部署方式:

  1. 使用springloaded配置pom.xml文件,使用mvn spring-boot:run启动
  2. 使用springloaded本地加载启动,配置jvm参数
  3. 使用devtools工具包,操作简单,但是每次需要重新部署

下面主要介绍第三种热部署方式

步骤:
1.在pom.xml中添加依赖

// devtools热部署
<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
			<!--配置了true后在修改java文件后也就支持了热启动,不过这种方式是属于项目重启(速度比较快的项目重启),会清空session中的值,
			也就是如果有用户登陆的话,项目重启后需要重新登陆-->
			<optional>true</optional>
			<!--<scope>true</scope>-->
		</dependency>

2.在application.properties中配置一下devtools

#关闭缓存,及时刷新
#spring.freemarker.cache=false #页面不加载缓存,修改即时生效
spring.thymeleaf.cache=true

#热部署生效
spring.devtools.restart.enabled=true
spring.devtools.restart.additional-paths=src/main/java
spring.devtools.restart.exclude=WEB-INF/**

3.IDEA中配置

当我们修改了类文件后,idea不会自动编译,得修改idea设置。

(1)File-Settings-Compiler-Build Project automatically
(2)ctrl + shift + alt + / ,选择Registry,勾上 Compiler autoMake allow when app running

在这里插入图片描述
在这里插入图片描述
配置完成,接下来就是测试了。

三、为什么重启很快

重启的时候只是加载了开发的Class,没有重新加载第三方的jar包。
devtools会监听classpath下的文件变动,并且会立即重启应用(发生在保存时机),注意:因为其采用的虚拟机机制。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值