springboot实现热部署

tech2023-02-12  103

springboot实现热部署

springboot实现热部署的方式有很多,做个简单总结备忘录

springboot有3中热部署方式:

1.使用springloaded配置pom.xml文件,使用mvn spring-boot:run启动 2.使用springloaded本地加载启动,配置jvm参数-javaagent:<jar包地址> -noverify 3.使用devtools工具包,操作简单

第一种方式springloaded

1.在pom.xml中添加依赖

<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>springloaded</artifactId> <version>1.2.8.RELEASE</version> </dependency> </dependencies> </plugin> </plugins> </build>

注意:是在spring-boot-maven-plugin中添加dependency 2.启动方式变为maven启动 在项目的文件夹dos窗口输入命令mvn spring-boot:run

第二种方式springloaded

1.下载springloaded工具包到一个指定目录(maven仓库)

2.在启动项目时,在jvm参数中输入命令

-javaagent:D:\Maven\repository\org\springframework\springloaded\1.2.8.RELEASE\springloaded-1.2.8.RELEASE.jar -noverify

扩展: -javaagent:命令后面跟冒号,意思是在执行main方法之前执行特定代码 -noverify 关闭java字节码校验功能

第三种方式devtools

1.在pom.xml中添加依赖

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> </dependency>

2.在application.yml中配置

spring: freemarker: cache: false #页面不加载缓存,修改即时生效 devtools: restart: enabled: true #设置开启热部署 additional-paths: src/main/java #重启目录 exclude: WEB-INF/**

3.IDEA中配置 当我们修改了类文件后,idea不会自动编译,得修改idea设置。 (1)File>>settings-Compiler-Build Project automatically (2)ctrl + shift + alt + / ,选择Registry,勾上 Compiler autoMake allow when app running 注: (1) devtools可以实现页面热部署(即页面修改后会立即生效,这个可以直接在application.properties文件中配置spring.thymeleaf.cache=false来实现), 实现类文件热部署(类文件修改后不会立即生效),实现对属性文件的热部署。 即devtools会监听classpath下的文件变动,并且会立即重启应用(发生在保存时机),注意:因为其采用的虚拟机机制,该项重启是很快的 (2)配置了true后在修改java文件后也就支持了热启动,不过这种方式是属于项目重启(速度比较快的项目重启),会清空session中的值,也就是如果有用户登陆的话,项目重启后需要重新登陆。 默认情况下,/META-INF/maven,/META-INF/resources,/resources,/static,/templates,/public这些文件夹下的文件修改不会使应用重启,但是会重新加载(devtools内嵌了一个LiveReload server,当资源发生改变时,浏览器刷新)。

最新回复(0)