springboot项目开发热部署-IDEA

热部署

热部署即无须手动重启Spring Boot应用即可重新编译、启动项目,大大缩短编译、启动的时间,从而提高开发效率。

spring-boot-devtools组件

spring-boot-devtools的核心是两个类加载器(ClassLoader):一个是Base类加载器(Base ClassLoader),负责加载那些不会改变的类,如第三方JAR包等;另一个是Restart类加载器(Restart ClassLoader),负责加载那些正在开发的会改变的类。这样如果只修改Java代码,devtools只会重新加载被修改的类文件,不会重新加载其他第三方的JAR包,所以重启较快,从而达到热部署的效果。

devtools会监听classpath下的文件变动,当文件被修改时会重新编译,重新生成类文件;devtools监听到类文件变动,触发Restart类加载器重新加载该类,从而实现类文件和属性文件的热部署。


步骤

步骤01:在pom.xml配置文件中添加dev-tools依赖。

<!-- 热部署-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <!-- optional依赖是否传递,设置为true时,表示依赖不会传递(打包成jar包后) -->
    <optional>true</optional>
</dependency>

使用optional=true表示依赖不会传递,即该项目依赖devtools;其他项目如果引入此项目生成的JAR包,则不会包含devtools,如果想要使用devtools,则需要重新引入。

步骤02:在application.properties中配置devtools。

# 热部署(点击顶部 构建项目(小锤子)按钮,触发热部署)
# 热部署生效
spring.devtools.restart.enabled=true
# 设置重启的目录
spring.devtools.restart.additional-paths=src/main/java
# classpath目录下的MEB-INE文件夹內容修改不重启(多个文件/目录,逗号隔开)
#spring.devtools.restart.exclude=WEB-INF/**,static/**,public/**,application-dev.properties

测试:IDEA中,启动项目后,修改“src/main/java”下的java文件,点击构建项目按钮(小锤子)即可触发热部署而无需重启应用。


问题

  • ctrl+s快捷键保存文件,也能触发热部署,但是修改的java文件未生效(还是旧的)。
  • idea中,点击构建项目按钮也无法触发java文件更新,可参考这篇博客进行设置:idea devtools无效(IDEA 2022.1版本,不需要进行设置)

Spring-loaded

支持在修改了类名,方法名,或者添加了新类,新方法的时候热加载。

下载jar包

到maven仓库下载最新的jar包,例如:springloaded-1.2.8.RELEASE.jar,下载后保存在E:\Java\myjar\

maven仓库:https://mvnrepository.com/

配置IDEA

  • 打开idea,添加配置。点击工具栏”打开编辑运行/调试配置“选项(启动三角形旁),选择“编辑配置…”

  • 选中项目(XXXApplication),右侧配置面板中点击“修改配置(M)”,选择“Java栏目下的添加vm选项”。

  • 添加如下配置:

  • -javaagent:E:\Java\myjar\springloaded-1.2.8.RELEASE.jar -noverify
    

使用

点击顶部工具栏的小铁锤(构建项目按钮),触发热加载。



笔记摘自:《Spring Boot从入门到实战》-章为忠《Spring-loaded实现热部署-开发环境》- hjwzyy

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值