在线网站流量查询,网站目录权限设置,企业网站策划案怎么写,王占山战斗英雄#x1f4d1;前言
本文主要SpringBoot通过DevTools实现热部署的文章#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ #x1f3ac;作者简介#xff1a;大家好#xff0c;我是青衿#x1f947; ☁️博客首页#xff1a;CSDN主页放风讲故事 #x1f304;每日一句前言
本文主要SpringBoot通过DevTools实现热部署的文章如果有什么需要改进的地方还请大佬指出⛺️ 作者简介大家好我是青衿 ☁️博客首页CSDN主页放风讲故事 每日一句努力一点优秀一点 目录 文章目录 前言**目录**为什么要使用热部署可选的热部署插件Spring Boot Devtools 是什么1、添加DevTools依赖在pom.xml中2、编辑application.yml配置文件3、IDEA的相关设置4.4 测试 文章末尾 为什么要使用热部署
在没有使用热部署的情况下一个稍微大点的项目启动就要七八秒甚至十几秒的启动时间当然这取决于你的机器性能不过毫无疑问不管你的机器性能如何强大也耗不过日益增长的项目体量所以迫切需要无需重新启动项目也能将代码的增加修改同步到服务器的手段。
可选的热部署插件
在Spring Boot项目中Spring Boot官方提供你了Devtools热部署模块通过maven的方式导入就能使用。根据官方描述Spring Boot Devtools插件使用了两种类加载器来加载资源对于第三方的jar包使用base classloader来加载这类资源一般比较固定不会发生改动而对于项目中的经常需要变动的代码类则使用restart classloader来加载。
Spring Boot Devtools 是什么
顾名思义DevTools为Spring开发人员提供了一些便利的开发期工具其中包括 代码变更后应用会自动重启 当面向浏览器的资源如模板、JavaScript、样式表等发生变化时会自动刷新浏览器 自动禁用模板缓存 在项目的开发中当每次修改了后台代码后都需要重启服务这样降低了开发效率。下面将介绍在SpringBoot项目中使用DevTools实现[热部署] spring-boot-devtools是一个为开发者服务的一个模块其中最重要的功能就是自动应用代码更改到最新的App上面去。原理是在发现代码有更改之后重新启动应用但是速度比手动停止后再启动还要更快更快指的不是节省出来的手工操作的时间。
深层原理是使用了两个ClassLoader一个Classloader加载那些不会改变的类第三方Jar包另一个ClassLoader加载会更改的类称为restart ClassLoader这样在有代码更改的时候原来的restart ClassLoader 被丢弃重新创建一个restart ClassLoader由于需要加载的类相比较少所以实现了较快的重启时间。
1、添加DevTools依赖在pom.xml中
pom.xml文件的配置 !-- 热部署相关依赖布置到线上的时候要去掉 --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-devtools/artifactIdoptionaltrue/optionalscoperuntime/scope/dependency依赖的取值为runtime表示该依赖只在运行时生效不会被打包到最终的可执行文件中。这意味着该依赖只在开发过程中起作用不会影响到生产环境。 2、编辑application.yml配置文件
在application.yml配置文件中添加相关配置信息。
spring:devtools:restart:enabled: true #设置开启热部署additional-paths: src/main/java #重启目录这样配置后当你修改了Java代码文件位于src/main/java目录下时应用程序会自动重启。 3、IDEA的相关设置
1菜单File → Settings → Build, Execution, Deployment → Compiler
在右侧的选项中找到 Build project automatically 选项并勾选如下图 2快捷键 Ctrl Shift Alt / 点击Registry项。
然后找到 compiler.automake.allow.when.app.running 选项并勾选如下图
4.4 测试
public ResponseResult login(RequestBody User user){System.out.println(无自动部署);System.out.println(无自动部署);System.out.println(无自动部署);
...
}控制台输出 修改字段 public ResponseResult login(RequestBody User user){System.out.println(自动部署);System.out.println(自动部署);System.out.println(自动部署);...
}几秒后控制台自动运行 以上是springboot使用devtools的示例可以根据自己的实际需求进行调整。 文章末尾