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. 快速入门
快速的创建一个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> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.5.0</version> </parent> </project>
|
注意上方的parent必须加,其中定义了springboot官方支持的n多依赖,基本上常用的已经有了,所以接下来导入依赖的时候,绝大部分都可以不加版本号。
此时的工程结构为:
第二步: 添加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方法
看到如上配置,证明启动成功,tomcat端口号默认为8080。
第五步: 如果想要修改端口号,可以在resources目录下新建application.properties
第六步: 重新运行
此时的项目结构为:
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
第二步: 打开cmd:找到jar对应的目录
输入命令
1
| java -jar helloSpringBoot-1.0-SNAPSHOT.jar
|
第三步: 测试,使用postman或者直接在浏览器输入http://localhost:8082/hello/boot
得到结果:hello spring boot
2.5 查看jar包内容
1
| jar tvf helloSpringBoot-1.0-SNAPSHOT.jar
|
3. 小结
- 通过Maven构建了一个空白Spring Boot项目,再通过引入web模块实现了一个简单的请求处理。
- 通过修改配置文件,更改端口号
- 编写了测试用例
- 打包jar包运行