Spring Boot的热部署
Spring Boot的热部署
一、前言
在开发中,业务变化、代码错误等发生时,难免修改程序。为了正确运行出修改的结果,我们往往需要重启应用,否则将不能看到修改后的结果,这一启动过程是非常浪费时间的,导致开发效率低。因此,我们有必要学习Spring Boot开发的热部署,自动实现应用的重启和部署,大大提高开发调试效率。
二、模板引擎的热部署
在Spring Boot应用中,使用模板引擎的页面默认是开启缓存的,如果修改了页面内容,则刷新页面是得不到修改后的页面的效果的。因此,可以在配置文件application.properties中关闭模板引擎的缓存。实例代码如下:
#关闭Thymeleaf缓存
spring.thymeleaf.cache=false
#关闭FreeMarker缓存
spring.freemarker.cache=false
#关闭Groovy缓存
spring.groovy.template.cache=false
三、使用Spring-boot-devtools进行热部署
在Spring Boot应用的pom.xml文件中添加spring-boot-devtools依赖即可实现页面和代码的热部署。 spring-boot-devtools是一个为开发者服务的模块,最重要的功能就是自动实现将修改的应用代码更新到最新的应用上。其工作原理是使用两个ClassLoader:一个ClassLoader加载那些不会改变的类(如第三方JAR包);一个ClassLoader加载更新的类。成为Restart ClassLoader。这样在有代码修改时,原来的Restart ClassLoader被丢弃,重新创建一个Restart ClassLoader加载更新的类。由于只加载部分修改的类,所以实现了较快的重启。
四、IDEA准备工作
1、开启代码自动编译
File->Setting->Build,Execution,Deployment->Compiler-> 勾选Build Project automatically
2、允许程序运行的时候自动编译
使用快捷键
ctrl+shift+alt+/
选中Registry
选中compiler.automake.allow.when.app.running
五、代码测试热部署
1、创建SpringBoot Web应用ch9_1
2、在配置文件application.properties中添加如下内容:
#关闭Thymeleaf缓存
spring.thymeleaf.cache=false
#关闭FreeMarker缓存
spring.freemarker.cache=false
#关闭Groovy缓存
spring.groovy.template.cache=false
3、创建控制器类
在com.ch.ch9_1包中,创建控制器类TestDevToolsController package com.ch.ch9_1;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;
@RestController public class TestDevToolsController { @RequestMapping("/testDevTools") public String testDevTools(){ return “test DevTools 111”; } }
4、测试运行
首先,启动主类Ch91Application,访问http://localhost:8080/testDevTools
将testDevTools方法中的return语句修改如下:
return "testDevTools 222";
无需重启ch9_1应用,直接刷新http://localhost:8080/testDevTools
,运行效果如下:
可以看出,spring-boot-devtools实现了代码修改后的热部署,同样,也可以实现新增类、修改配置文件等的热部署。
相关文章
- spring boot 过滤器_拦截器和过滤器的区别面试
- spring boot自动配置原理面试题_Spring boot面试
- Spring 全家桶之 Spring Boot 2.6.4(三)- Logging
- Spring Boot介绍和环境配置
- Java项目分享-基于Spring Boot的迷你天猫商城
- Spring的静态代理与动态代理[通俗易懂]
- Spring-boot_Spring Boot
- Spring Boot 最新发布,看完我彻底傻眼了!没几个 能打的了
- 不会前端没事,用GWT Boot和Spring Boot构建Web程序
- 【Spring Cloud Alibaba】(五)Dubbo启动报错?一直重连报错?你值得学习的是排查问题的方法
- Spring Boot+Keycloak从零到壹
- Spring Boot 系列四:Springboot 启动原理和微服务主流框架
- Spring Boot的单元测试(概念)
- 公司用了 6 年的Spring Boot 部署方案!打包 + Shell 脚本详解,稳的一批!
- Security安全认证 | Spring Boot如何集成Security实现安全认证
- 赠书:《深入理解 Spring Cloud 与实战》
- Spring Boot 监听 Redis Key 失效事件实现定时任务
- Xilinx U-Boot 2020.2 找不到文件“boot.scr”,导致启动失败
- 使用 Spring Cloud Bus 向指定的微服务发送消息
- Spring开发环境搭建
- Spring Boot(四):利用devtools实现热部署,改动代码自动生效详解编程语言
- spring boot jar包 linux 部署详解编程语言
- spring boot jar 部署linux服务器详解编程语言
- spring Boot(十九):使用Spring Boot Actuator监控应用详解编程语言
- Spring Boot(十八):使用Spring Boot集成FastDFS详解编程语言
- Spring Boot(十三):spring boot小技巧详解编程语言
- Spring Boot 应用的 Admin UI 2.0.4 发布