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
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
SpringLoader 缺陷: 就是 Java 代码做部署处理。 但是对页面无能为力。
- 注意: 这种方式的缺点是 Springloader 热部署程序是在系统后台以进程的形式来运行。 需要手动关闭该进程
(2)
方式二: 在项目中直接使用 jar 包的方式
- 添加 springloader 的 jar 包:springloaded-1.2.5.RELEASE.jar
- 启动方式
- 启动命令:-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热部署无效的解决办法
在项目中引用spring-boot-devtools依赖后,发现热部署没有生效,原因是在IntelliJ IDEA中默认没有开启“自动编译”的功能,需要手动进行配置即可。
- File -> Settings -> Compiler,勾选 Build Project automatically
- 按快捷键Ctrl+Shift+Alt+/,选择1.Registry…
- 勾选 compiler.automake.allow.when.app.running 即可
- 重新启动项目,运行程序并修改某行代码,在打印的日志中你会发现LiveReload server is running 字样,说明热部署已生效。