springboot项目开发热部署-IDEA

热部署

spring-boot-devtools组件,使得无须手动重启Spring Boot应用即可重新编译、启动项目,大大缩短编译、启动的时间,从而提高开发效率。

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 Boot从入门到实战》-章为忠

猜你喜欢

转载自blog.csdn.net/weixin_44773109/article/details/127721527
今日推荐