SpringBoot 热部署

释放双眼,带上耳机,听听看~!

SprigBoot 的热部署方式分为两种

  • SpringLoader 插件
  • DevTools 工具

一、SpringLoader 插件的使用

1、创建项目spring-boot-springloader,修改pom.xml文件


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
1<?xml version="1.0" encoding="UTF-8"?>
2<project xmlns="http://maven.apache.org/POM/4.0.0"
3         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5    <modelVersion>4.0.0</modelVersion>
6
7    <groupId>com.bjsxt</groupId>
8    <artifactId>spring-boot-springloader</artifactId>
9    <version>1.0-SNAPSHOT</version>
10
11    <parent>
12        <groupId>org.springframework.boot</groupId>
13        <artifactId>spring-boot-starter-parent</artifactId>
14        <version>1.5.10.RELEASE</version>
15    </parent>
16    <properties>
17        <java.version>1.8</java.version>
18        <thymeleaf.version>3.0.2.RELEASE</thymeleaf.version>
19        <thymeleaf-layout-dialect.version>2.0.4</thymeleaf-layout-dialect.version>
20    </properties>
21
22    <dependencies>
23        <!-- springBoot的启动器 -->
24        <dependency>
25            <groupId>org.springframework.boot</groupId>
26            <artifactId>spring-boot-starter-web</artifactId>
27        </dependency>
28        <!-- thymeleaf的启动器 -->
29        <dependency>
30            <groupId>org.springframework.boot</groupId>
31            <artifactId>spring-boot-starter-thymeleaf</artifactId>
32        </dependency>
33    </dependencies>
34</project>
35
36

2、创建controller


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
1package com.bjsxt.controller;
2
3import org.springframework.stereotype.Controller;
4import org.springframework.web.bind.annotation.RequestMapping;
5
6@Controller
7public class UsersController {
8
9    @RequestMapping("/show")
10    public String showPage() {
11        return "index";
12    }
13}
14
15

3、编写页面


1
2
3
4
5
6
7
8
9
10
11
12
1<!DOCTYPE html>
2<html lang="en">
3<head>
4    <meta charset="UTF-8">
5    <title>Title</title>
6</head>
7<body>
8<span th:text="Hello...."></span>
9</body>
10</html>
11
12

4、创建启动类


1
2
3
4
5
6
7
8
9
10
11
12
13
1package com.bjsxt;
2
3import org.springframework.boot.SpringApplication;
4import org.springframework.boot.autoconfigure.SpringBootApplication;
5
6@SpringBootApplication
7public class App {
8    public static void main(String[] args) {
9        SpringApplication.run(App.class, args);
10    }
11}
12
13

5、使用 SpringLoader 进行项目的热部署

(1)
方式一: 以 maven 插件方式使用 SpringLoader

  • 在 pom 文件中添加插件配置


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
1<!-- springloader插件 -->
2<build>
3   <plugins>
4       <plugin>
5           <groupId>org.springframework.boot</groupId>
6           <artifactId>spring-boot-maven-plugin</artifactId>
7           <dependencies>
8               <dependency>
9                   <groupId>org.springframework</groupId>
10                  <artifactId>springloaded</artifactId>
11                  <version>1.2.5.RELEASE</version>
12              </dependency>
13          </dependencies>
14      </plugin>
15  </plugins>
16</build>
17
18
  • 使用 maven 的命令启动 :spring-boot:run

SpringBoot 热部署
SpringBoot 热部署
SpringLoader 缺陷: 就是 Java 代码做部署处理。 但是对页面无能为力。

  • 注意: 这种方式的缺点是 Springloader 热部署程序是在系统后台以进程的形式来运行。 需要手动关闭该进程

(2)
方式二: 在项目中直接使用 jar 包的方式

  • 添加 springloader 的 jar 包:springloaded-1.2.5.RELEASE.jar
  • 启动方式

SpringBoot 热部署

  • 启动命令:-javaagent:.\lib\springloaded-1.2.5.RELEASE.jar -noverify

二、DevTools 工具

1、SpringLoader 与 DevTools 的区别:

  • SpringLoader: SpringLoader 在部署项目时使用的是热部署的方式
  • DevTools: DevTools 在部署项目时使用的是重新部署的方式

2、修改项目的 pom 文件添加 devtools 的依赖


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
1<?xml version="1.0" encoding="UTF-8"?>
2<project xmlns="http://maven.apache.org/POM/4.0.0"
3         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5    <modelVersion>4.0.0</modelVersion>
6
7    <parent>
8        <groupId>org.springframework.boot</groupId>
9        <artifactId>spring-boot-starter-parent</artifactId>
10        <version>1.5.10.RELEASE</version>
11    </parent>
12
13    <groupId>com.bjsxt</groupId>
14    <artifactId>spring-boot-devtools</artifactId>
15    <version>1.0-SNAPSHOT</version>
16
17    <properties>
18        <java.version>1.8</java.version>
19        <thymeleaf.version>3.0.2.RELEASE</thymeleaf.version>
20        <thymeleaf-layout-dialect.version>2.0.4</thymeleaf-layout-dialect.version>
21    </properties>
22
23    <dependencies>
24        <!-- springBoot的启动器 -->
25        <dependency>
26            <groupId>org.springframework.boot</groupId>
27            <artifactId>spring-boot-starter-web</artifactId>
28        </dependency>
29        <!-- thymeleaf的启动器 -->
30        <dependency>
31            <groupId>org.springframework.boot</groupId>
32            <artifactId>spring-boot-starter-thymeleaf</artifactId>
33        </dependency>
34        <!-- DevTools的坐标 -->
35        <dependency>
36            <groupId>org.springframework.boot</groupId>
37            <artifactId>spring-boot-devtools</artifactId>
38            <optional>true</optional>
39        </dependency>
40    </dependencies>
41</project>
42
43

IntelliJ IDEA中使用spring-boot-devtools热部署无效的解决办法

SpringBoot 热部署
在项目中引用spring-boot-devtools依赖后,发现热部署没有生效,原因是在IntelliJ IDEA中默认没有开启“自动编译”的功能,需要手动进行配置即可。

  1. File -> Settings -> Compiler,勾选 Build Project automatically

SpringBoot 热部署

  1. 按快捷键Ctrl+Shift+Alt+/,选择1.Registry…

SpringBoot 热部署

  1. 勾选 compiler.automake.allow.when.app.running 即可

SpringBoot 热部署

  1. 重新启动项目,运行程序并修改某行代码,在打印的日志中你会发现LiveReload server is running 字样,说明热部署已生效。

SpringBoot 热部署

给TA打赏
共{{data.count}}人
人已打赏
安全技术

c++编码规范

2022-1-11 12:36:11

安全经验

jenkins+gitlab+docker快速部署发布回滚示例

2021-10-11 16:36:11

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索