四、SpringBoot配置devtools实现热部署

本文详细介绍了如何在SpringBoot项目中实现热部署,通过配置pom文件中的spring-boot-devtools和spring-boot-maven-plugin插件,使代码改动后能够自动重启,大幅提高开发效率。并提供了热部署的原理说明及常见问题解决办法。

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

在使用springboot项目开发过程中,我们会在本地不断地修改代码,然后不断地重启tomcat实现项目的重新发版,这个过程占用了我们很大的时间,所以我们今天来讲一下如何实现热部署(就是改了代码它会自动重启,不用我们手动重启)

一、在pom文件中添加如下配置:

1.在<dependencies></dependencies>中添加:

<!-- 热部署 -->
        <dependency> 
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <optional>true</optional>
        </dependency>

2.在<plugins></plugins>中添加:

<plugin>
         <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-maven-plugin</artifactId>
              <configuration>
              <!-- 必须配置该项为true,fork :  如果没有该项配置,devtools不会起作用,即应用不会restart -->
                   <fork>true</fork>
               </configuration>

 </plugin>

spring-boot-maven-plugin插件创建项目后都会有,如果没有就加上,关键是加粗字体配置!

 

配置完了,就可以测试了,注意:改了代码项目不会立刻重启,需要等5S!!!

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

 

如果想要实现修改完代码立即重启,自定义能监测代码变化的目录(哪些代码修改了允许重启),忽略哪些代码改变不重启,作application.properties如下配置:

#热部署生效

spring.devtools.restart.enabled: true

#设置重启的目录 

spring.devtools.restart.additional-paths: src/main/java

#classpath目录下的WEB-INF文件夹内容修改不重启

spring.devtools.restart.exclude: WEB-INF/**

 什么时候才会触发上述配置项呢?当我们修改完代码保存的时候!

 

如果完成上述步骤后依然不能重启:

1.是否加入plugin了,以及属性<fork>true</fork>

2.如果使用工具IDEA,Intellij IDEA是否开启了Make Project Automatically

3.如果设置SpringApplication.setRegisterShutdownHook(false),则自动重启将不起作用,SpringApplication为启动类,具体可能名称不同。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值