2.3 开发环境热部署

第2章 开始 Spring Boot 之旅

2.1 第一个Spring Boot项目:helloworld
2.2 单元测试
2.3 开发环境热部署

2.3 开发环境热部署

背景

在实际的项目开发调试过程中会频繁地修改后台文件,导致需要重新编译、重新启动,整个过程非常麻烦,影响开发效率。Spring Boot 是如何解决这个问题的呢?

2.3.1 devtools实现原理

  1. devtools的作用:

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

  2. devtools的实现原理:

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

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

  3. 注意事项:

    并不是所有的更改都需要重启应用(如静态资源、视图模板)。我们可以通过设置 spring.devtools.restart.exclude 属性来指定一些文件或目录的修改不用重启应用。

2.3.2 配置开发环境热部署

  1. 在pom.xml配置文件中,引入devtools依赖
        <!--开发环境热部署-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <!--<scope>runtime</scope>-->
            <optional>true</optional>   <!-- optional=true 表示依赖不会传递 -->
        </dependency>

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

  1. 在application.properties配置文件中,配置devtools
# 热部署生效
spring.devtools.restart.enabled=true
# 设置重启目录
spring.devtools.restart.additional-paths=src/main/java
# classpath 目录下的WEB-INF文件夹内容修改不重启
spring.devtools.restart.exclude=WEB-INF/**

# 前台页面热部署(取值为false,表示指定不缓存前端页面)
#spring.thymeleaf.cache=false

  1. 验证配置是否生效
    首先启动项目,修改项目中的某个java文件,然后在IDEA后台可以看到devtools自动重启应用,后台日志输出。

总结

本节讲解了 Spring Boot 非常实用的功能:开发环境热部署。Spring Boot 通过提供 spring-boot-devtools 组件,使得无须手动重启 Spring Boot 应用即可重新编译、启动项目,大大缩短编译、启动的时间,从而提高开发效率。配置开发环境热部署的步骤很简单,主要有3个步骤:引入依赖、配置devtools、验证配置是否生效。

来源:《Spring Boot 从入门到实战》学习笔记

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值