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的主要优点:
- 为所有Spring开发者更快的入门
- 开箱即用,提供各种默认配置来简化项目配置
- 内嵌式容器简化Web项目
- 没有冗余代码生成和XML配置的要求
- 统一的依赖管理
- 自动装配,更易使用,更易扩展
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
3
4
5
2. 快速入门
快速的创建一个Spring Boot应用,并且实现一个简单的Http请求处理。通过这个例子对Spring Boot有一个初步的了解,并体验其结构简单、开发快速的特性。
教程使用的Idea版本:2019.3
2.1 创建基础项目
第一步: 创建maven项目
pom.xml :
<?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>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
注意上方的parent必须加,其中定义了springboot官方支持的n多依赖,基本上常用的已经有了,所以接下来导入依赖的时候,绝大部分都可以不加版本号。
此时的工程结构为:
第二步: 添加web依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
2
3
4
5
6
添加上方的web依赖,其中间接依赖了spring-web,spring-webmvc,spring-core等spring和springmvc的包,并且集成了tomcat。
第三步: 编写启动类
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);
}
}
2
3
4
5
6
7
8
9
10
11
12
13
@SpringBootApplication注解标识了HelloApp为启动类,也是Spring Boot的核心。
第四步: 运行启动类的main方法
看到如上配置,证明启动成功,tomcat端口号默认为8080。
第五步: 如果想要修改端口号,可以在resources目录下新建application.properties
server.port=8082
第六步: 重新运行
此时的项目结构为:
src/main/java : 编写java代码,注意启动类需要放在项目的根包下。
src/main/resources: 放置资源的目录,比如springboot的配置文件,静态文件,mybatis配置,日志配置等。
src/test/java: 测试代码
2.2 编写一个Http接口
第一步: 创建HelloController
类,内容如下:
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";
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
注意包名,必须在启动类所在的包名下。
**第二步: ** 重启程序,使用postman或者直接在浏览器输入http://localhost:8082/hello/boot
得到结果:hello spring boot
2.3 编写单元测试用例
**第一步: ** 添加spring boot测试依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
2
3
4
5
第二步: 在src/test 下,编写测试用例
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")));
}
}
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
上面的测试用例,是构建一个空的WebApplicationContext
,并且在before中加载了HelloController,得以在测试用例中mock调用,模拟请求。
2.4 打包为jar运行
第一步: 添加打包(maven构建springboot)插件
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
2
3
4
5
6
7
8
在idea的右侧 maven中,使用package来打包程序,打包完成后,在target目录下生成helloSpringBoot-1.0-SNAPSHOT.jar
**第二步: ** 打开cmd:找到jar对应的目录
输入命令
java -jar helloSpringBoot-1.0-SNAPSHOT.jar
第三步: 测试,使用postman或者直接在浏览器输入http://localhost:8082/hello/boot
得到结果:hello spring boot
2.5 查看jar包内容
jar tvf helloSpringBoot-1.0-SNAPSHOT.jar
3. 小结
- 通过Maven构建了一个空白Spring Boot项目,再通过引入web模块实现了一个简单的请求处理。
- 通过修改配置文件,更改端口号
- 编写了测试用例
- 打包jar包运行