Spring boot 热部署

在调试程序时需要频繁地重启服务,只是修改了一点代码就需要重启服务,为了减少这部分重复的工作,提供更好的开发体验,需要配一个热部署来实现。spring boot中使用spring-boot-devtools来达成热部署功能,spring-boot-devtools是一个为开发者服务的一个模块,它使用了两个类加载器,不改变的类(例如,来自第三方jar的)被加载到 base 类加载器中;正在开发的类被加载到 restart 类加载器中。当应用程序重启时,restart加载器将被丢弃,并创建一个新的类加载器。因为 base 加载器已经已加载并且可用,所以应用程序重启通常比“冷启动”快得多。
它的配置十分简单,只需要对pom进行改动:

    ......    
    <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <optional>true</optional><!-- 需要设置为true,否则不生效-->
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <fork>true</fork><!-- 没有该配置,devtools 不生效 -->
                </configuration>
            </plugin>
        </plugins>
    </build>

然后我们检查自动编译是否配置:

如果是eclipse:

检查project --> Build Automatically

如果是idea:

1.File > Settings > Compiler-Build Project automatically

2.ctrl + shift + alt + / > Registry > 勾选Compiler autoMake allow when app running

idea是需要配置的,eclipse默认是配置自动编译的,但最好都确认下

pom也修改了,自动编译也检查了,发现热部署无效,还有可能是springboot版本过高存在问题,需要降低springboot版本,或者给devtools版本加版本号来解决。

注意事项


1.生产环境devtools将被禁用,如java -jar方式或者自定义的类加载器等都会识别为生产环境。

2.打包应用默认不会包含devtools,除非禁用SpringBoot Maven插件的 excludeDevtools属性。

3.Thymeleaf无需配置 spring.thymeleaf.cache:false,devtools默认会自动设置。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值