spring-boot-devtools实现热部署

1.devtools

  spring为开发者提供了一个名为spring-boot-devtools的模块来使Spring Boot应用支持热部署,提高开发者的开发效率,无需手动重启Spring Boot应用。

2.项目搭建

  本文是采用IDEA搭建的Spring Boot应用,通过spring-boot-devtools配置,可以支持修改java文件会自动重启程序,一些资源无需触发重启,例如thymeleaf模板文件就可以实时编辑。默认情况下,更改/META-INF/maven,/META-INF/resources ,/resources ,/static ,/public 或/templates下的资源不会触发重启,而是触发livereload。devtools模块包含一个嵌入的livereload服务器,可以在资源变化时用来触发浏览器刷新。浏览器需要在livereload.com下载安装扩展。 例如Chrome浏览器在应用商店安装livereload插件后,在要自动刷新的页面点击对应的图标,启动应用后更新页面内容或者css等都会触发页面自动刷新。

3.livereload

  livereload 通过引入的脚本livereload.js在 livereload 服务和浏览器之间建立了一个 WebSocket 连接。每当监测到文件的变动,livereload 服务就会向浏览器发送一个信号,浏览器收到信号后就刷新页面,实现了实时刷新的效果。每次启动时,需要点击对应的图标,如下图所示。

4.项目代码配置

(1)pom.xml配置文件

1

2

3

4

5

6

7

8

9

10

11

12

<dependency>

   <groupId>org.springframework.boot</groupId>

   <artifactId>spring-boot-devtools</artifactId>

   <optional>true</optional>

</dependency>

<plugin>

   <groupId>org.springframework.boot</groupId>

   <artifactId>spring-boot-maven-plugin</artifactId>

   <configuration>

      <fork>true</fork<!-- 如果没有该配置,devtools不会生效 -->

   </configuration>

</plugin>

(2)yml配置

1

2

3

4

5

6

devtools:

  livereload:

    enabled: true #是否支持livereload

    port: 35729

  restart:

    enabled: true #是否支持热部署

5.IDEA配置

(1)File-Settings-Compiler-Build project automatically

(2)ctrl + shift + alt + /,选择Registry,勾上 Compiler autoMake allow when app running

6.安装livereload插件
下载livereload插件,将其安装到chrome扩展程序中,并选中允许访问文件网址。


7.测试
(1)修改类 应用会重启
(2)修改配置文件 应用会重启
(3)修改静态文件(html、css等),应用不会重启,但是会调用livereload,浏览器会自动刷新,显示最新的修改内容。

 

转自(https://www.cnblogs.com/TechSnail/p/7690829.html)

### 配置 Spring Boot DevTools 实现热部署 为了使 Spring Boot 应用程序能够支持热部署,需按照如下方式配置: #### Maven 或 Gradle 中引入依赖 在项目的构建文件中加入 `spring-boot-devtools` 依赖项。对于基于Maven的项目,在pom.xml 文件内添加以下片段[^4]: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> </dependency> ``` 而对于采用Gradle作为构建工具的情况,则应在build.gradle里声明相应的依赖关系。 #### 修改 application.properties 或者 application.yml 文件 为了让应用程序响应代码更改而自动重启,可以在application.properties (或 .yml) 文件中指定相关属性来启用此功能: ```properties # 开启热部署 spring.devtools.restart.enabled=true # 设置额外监控路径,默认为 classpath 下方所有资源;这里指定了 Java 源码所在位置 spring.devtools.restart.additional-paths=src/main/java # 排除不需要触发重启操作的特定目录,比如静态资源文件夹 spring.devtools.restart.exclude=static/** ``` 另外还可以调整其他一些参数以优化性能表现,例如关闭模板引擎缓存以便即时反映视图层的变化[^5]: ```properties # 页面不产生缓存,及时更新 spring.thymeleaf.cache=false # 启用内容协商策略处理静态资源版本管理 spring.resources.chain.strategy.content.enabled=true spring.resources.chain.strategy.content.paths=/\** ``` #### 调整 IDE 设置 如果使用的是 IntelliJ IDEA 进行开发工作,那么还需要做一些必要的环境设定才能让热部署正常运作。具体来说就是确保编译器选项中的 "Build project automatically" 已被激活,并且开启了 Power Save Mode 关闭状态[^3]。 完成上述步骤之后,每当源代码发生变动时,Spring Boot DevTools 就会检测到这些变化并立即执行相应动作——无论是重新加载受影响的部分还是完全重启整个应用实例,从而大大提高了迭代速度和调试效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值