Springboot热部署,使用spring-boot-devtools、springloaded两种方式进行热部署
时间:2022-07-26
本文章向大家介绍Springboot热部署,使用spring-boot-devtools、springloaded两种方式进行热部署,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1、在项目的开发阶段,经常需要对代码进行反复修改,这样就会导致SpringBoot运行容器反复启动。为了解决这种频繁重启问题,SpringBoot提供了自动加载配置的依赖库,以实现代码的动态加载。
在自己要经常修改的项目模块写上下面的依赖配置,保存,刷新update项目,然后修改自己的项目,可以看到后台就已经重新部署了,DevTools 在部署项目时使用的是重新部署的方式。
1 <!-- DevTools 的坐标,热部署 -->
2 <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-devtools -->
3 <dependency>
4 <groupId>org.springframework.boot</groupId>
5 <artifactId>spring-boot-devtools</artifactId>
6 <version>2.2.10.RELEASE</version>
7 </dependency>
项目中配置了以上坐标之后,每当用户修改项目中程序类的时候都会由SpringBoot自动加载更新后的程序代码,同时也可以在项目名称上看到这样得标记了“[devtools]”。
2、除了使用devtools的方式,还可以使用下面的springloaded的方式进行热部署的,SpringLoader 在部署项目时使用的是热部署的方式。
1 <!-- https://mvnrepository.com/artifact/org.springframework/springloaded -->
2 <dependency>
3 <groupId>org.springframework</groupId>
4 <artifactId>springloaded</artifactId>
5 <version>1.2.8.RELEASE</version>
6 </dependency>
需要注意得是这里两个坐标依赖得方式,我说直接放到dependencies标签里面得哦,如下所示:
1 <?xml version="1.0" encoding="UTF-8"?>
2 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
4 <modelVersion>4.0.0</modelVersion>
5 <parent>
6 <groupId>org.springframework.boot</groupId>
7 <artifactId>spring-boot-starter-parent</artifactId>
8 <version>2.2.6.RELEASE</version>
9 <relativePath/> <!-- lookup parent from repository -->
10 </parent>
11 <groupId>com.bie</groupId>
12 <artifactId>springboot-hello</artifactId>
13 <version>0.0.1-SNAPSHOT</version>
14 <name>springboot-hello</name>
15 <description>Demo project for Spring Boot</description>
16
17 <properties>
18 <java.version>1.8</java.version>
19 </properties>
20
21 <dependencies>
22 <dependency>
23 <groupId>org.springframework.boot</groupId>
24 <artifactId>spring-boot-starter-web</artifactId>
25 </dependency>
26 <!-- 添加junit环境的jar包 -->
27 <dependency>
28 <groupId>org.springframework.boot</groupId>
29 <artifactId>spring-boot-starter-test</artifactId>
30 <scope>test</scope>
31 <!--<exclusions>
32 <exclusion>
33 <groupId>org.junit.vintage</groupId>
34 <artifactId>junit-vintage-engine</artifactId>
35 </exclusion>
36 </exclusions>-->
37 </dependency>
38 <!-- thymeleaf的启动器 -->
39 <dependency>
40 <groupId>org.springframework.boot</groupId>
41 <artifactId>spring-boot-starter-thymeleaf</artifactId>
42 </dependency>
43 <!-- mybatis的启动器 -->
44 <dependency>
45 <groupId>org.mybatis.spring.boot</groupId>
46 <artifactId>mybatis-spring-boot-starter</artifactId>
47 <version>2.1.1</version>
48 </dependency>
49 <!-- mysql数据库驱动的依赖包 -->
50 <dependency>
51 <groupId>mysql</groupId>
52 <artifactId>mysql-connector-java</artifactId>
53 </dependency>
54 <!-- druid数据库连接池 -->
55 <dependency>
56 <groupId>com.alibaba</groupId>
57 <artifactId>druid</artifactId>
58 <version>1.1.10</version>
59 </dependency>
60 <dependency>
61 <groupId>junit</groupId>
62 <artifactId>junit</artifactId>
63 <scope>test</scope>
64 </dependency>
65 <!-- DevTools 的坐标,热部署 -->
66 <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-devtools -->
67 <!-- <dependency>
68 <groupId>org.springframework.boot</groupId>
69 <artifactId>spring-boot-devtools</artifactId>
70 <version>2.2.10.RELEASE</version>
71 </dependency> -->
72
73 <!-- https://mvnrepository.com/artifact/org.springframework/springloaded -->
74 <dependency>
75 <groupId>org.springframework</groupId>
76 <artifactId>springloaded</artifactId>
77 <version>1.2.8.RELEASE</version>
78 </dependency>
79 </dependencies>
80
81 <build>
82 <plugins>
83 <plugin>
84 <groupId>org.springframework.boot</groupId>
85 <artifactId>spring-boot-maven-plugin</artifactId>
86 </plugin>
87 </plugins>
88 <!-- 此配置可以解决,如果将*.mapper.xml配置文件放入到src/main/java,无法加载mybatis映射文件的问题 -->
89 <!--<resources>
90 <resource>
91 <directory>src/main/java</directory>
92 <includes>
93 <include>**/*.xml</include>
94 </includes>
95 </resource>
96 </resources>-->
97 </build>
98
99
100 </project>
- 小学生都学Python了,你还不知道怎么开始
- java实现最基础的socket网络通信
- struts的声明式异常处理 demo
- npm管理工具介绍
- 对windows密码抓取神器mimikatz的逆向分析
- Keras中神经网络模型的5阶段生命周期
- java的断言(assert)
- Android studio中Rendering Problems不能可视化操作的解决办法
- 使用 Referer Meta 标签控制 referer—详解 referrer-policy
- 网站抓取引子 - 获得网页中的表格
- Android Firebase 服务简介
- CVE-2015-0393:Oracle发布严重安全漏洞预警
- 研究人员发现一种利用Siri窃取苹果iPhone/iPad数据的方法
- 关于Python中的__main__和编程模板
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- matplotlib基础绘图命令之boxplot
- MapReduce之GroupingComparator分组(辅助排序、二次排序)
- MySQL优化--概述以及索引优化分析
- MySQL优化--查询分析工具以及各种锁
- MySQL优化--MVCC
- Linux入门--基础命令
- Linux入门--权限管理、任务调度、磁盘管理
- 【Rust日报】2020-08-05 -- 如何在2020年进一步加快 Rust 编译器的速度
- Linux学习--网络、进程、服务、软件管理
- IOS label 设置行高
- 重学数据结构(序:概览)
- 【Rust日报】2020-08-06 使用 Rust 编写的 Lambdas 在 AWS IoT 和 SQS 队列之间传递消息
- react-router-config的使用
- Spring 源码解读第七弹!bean 标签的解析
- Kubeflow实战: 入门介绍与部署实践