1. Spring Boot介绍

1.1 简介

在您第1次接触和学习Spring框架的时候,是否因为其繁杂的配置而退却了?

在你第n次使用Spring框架的时候,是否觉得一堆反复黏贴的配置有一些厌烦?

那么您就不妨来试试使用Spring Boot来让你更易上手,更简单快捷地构建Spring应用!

Spring Boot让我们的Spring应用变的更轻量化。

我们不必像以前那样繁琐的构建项目、打包应用、部署到Tomcat等应用服务器中来运行我们的业务服务。

通过Spring Boot实现的服务,只需要依靠一个Java类,把它打包成jar,并通过java -jar命令就可以运行起来。

这一切相较于传统Spring应用来说,已经变得非常的轻便、简单。

总结一下Spring Boot的主要优点:

  1. 为所有Spring开发者更快的入门
  2. 开箱即用,提供各种默认配置来简化项目配置
  3. 内嵌式容器简化Web项目
  4. 没有冗余代码生成和XML配置的要求
  5. 统一的依赖管理
  6. 自动装配,更易使用,更易扩展

1.2 使用版本说明

Springboot版本:使用最新的2.5.0版本

教程参考了官方文档进行制作,权威。

其他依赖版本:

1. Maven  需求:3.5+

   2. JDK 需求  8+
   3. Spring Framework 5.3.7以上版本
   4. Tomcat 9.0
   5. Servlet版本 4.0  但是可以部署到Servlet到3.1+的容器中

2. 快速入门

快速的创建一个Spring Boot应用,并且实现一个简单的Http请求处理。通过这个例子对Spring Boot有一个初步的了解,并体验其结构简单、开发快速的特性。

教程使用的Idea版本:2019.3

2.1 创建基础项目

第一步: 创建maven项目

pom.xml :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>com.xiaopizhu</groupId>
<artifactId>helloSpringBoot</artifactId>
<version>1.0-SNAPSHOT</version>
<!--springboot的父工程其中定义了常用的依赖,并且无依赖冲突-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.0</version>
</parent>
</project>

注意上方的parent必须加,其中定义了springboot官方支持的n多依赖,基本上常用的已经有了,所以接下来导入依赖的时候,绝大部分都可以不加版本号。

此时的工程结构为:

image20210523173241557.png

第二步: 添加web依赖

1
2
3
4
5
6
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>

添加上方的web依赖,其中间接依赖了spring-web,spring-webmvc,spring-core等spring和springmvc的包,并且集成了tomcat。

第三步: 编写启动类

1
2
3
4
5
6
7
8
9
10
11
12
13
package com.xiaopizhu.springboot;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class HelloApp {

public static void main(String[] args) {
SpringApplication.run(HelloApp.class,args);
}
}

@SpringBootApplication注解标识了HelloApp为启动类,也是Spring Boot的核心。

第四步: 运行启动类的main方法

image20210523173712142.png

看到如上配置,证明启动成功,tomcat端口号默认为8080。

第五步: 如果想要修改端口号,可以在resources目录下新建application.properties

1
server.port=8082

第六步: 重新运行

image20210523174011613.png

此时的项目结构为:

image20210523174032053.png

src/main/java : 编写java代码,注意启动类需要放在项目的根包下。

src/main/resources: 放置资源的目录,比如springboot的配置文件,静态文件,mybatis配置,日志配置等。

src/test/java: 测试代码

2.2 编写一个Http接口

第一步: 创建HelloController类,内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package com.xiaopizhu.springboot.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("hello")
public class HelloController {

@GetMapping("boot")
public String hello(){
return "hello spring boot";
}

}

注意包名,必须在启动类所在的包名下。

第二步: 重启程序,使用postman或者直接在浏览器输入http://localhost:8082/hello/boot

得到结果:hello spring boot

2.3 编写单元测试用例

第一步: 添加spring boot测试依赖

1
2
3
4
5
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>

第二步: 在src/test 下,编写测试用例

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
package com.xiaopizhu.springboot.controller;

import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.http.MediaType;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;

import static org.hamcrest.Matchers.equalTo;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;

@SpringBootTest
public class TestHelloController {

private MockMvc mockMvc;

@BeforeEach
public void beforeEach(){
mockMvc = MockMvcBuilders.standaloneSetup(new HelloController()).build();
}
@Test
public void testHello() throws Exception {
mockMvc.perform(MockMvcRequestBuilders.get("/hello/boot")
.accept(MediaType.APPLICATION_JSON))
.andExpect(status().isOk())
.andExpect(content().string(equalTo("hello spring boot")));
}
}

上面的测试用例,是构建一个空的WebApplicationContext,并且在before中加载了HelloController,得以在测试用例中mock调用,模拟请求。

2.4 打包为jar运行

第一步: 添加打包(maven构建springboot)插件

1
2
3
4
5
6
7
8
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>

在idea的右侧 maven中,使用package来打包程序,打包完成后,在target目录下生成helloSpringBoot-1.0-SNAPSHOT.jar

image20210523181737720.png

第二步: 打开cmd:找到jar对应的目录

输入命令

1
java -jar helloSpringBoot-1.0-SNAPSHOT.jar

image20210523182426404.png

第三步: 测试,使用postman或者直接在浏览器输入http://localhost:8082/hello/boot

得到结果:hello spring boot

2.5 查看jar包内容

1
jar tvf helloSpringBoot-1.0-SNAPSHOT.jar

3. 小结

  1. 通过Maven构建了一个空白Spring Boot项目,再通过引入web模块实现了一个简单的请求处理。
  2. 通过修改配置文件,更改端口号
  3. 编写了测试用例
  4. 打包jar包运行