1. Spring Boot介绍

视频教程地址open in new window

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  但是可以部署到Servlet3.1+的容器中
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>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

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

此时的工程结构为:

image-20210523173241557

第二步: 添加web依赖

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>
1
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);
    }
}

1
2
3
4
5
6
7
8
9
10
11
12
13

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

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

image-20210523173712142

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

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

server.port=8082
1

第六步: 重新运行

image-20210523174011613

此时的项目结构为:

image-20210523174032053

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";
    }

}

1
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>
1
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")));
    }
}

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

上面的测试用例,是构建一个空的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>
1
2
3
4
5
6
7
8

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

image-20210523181737720

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

输入命令

java -jar helloSpringBoot-1.0-SNAPSHOT.jar
1

image-20210523182426404

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

得到结果:hello spring boot

2.5 查看jar包内容

jar tvf helloSpringBoot-1.0-SNAPSHOT.jar
1

3. 小结

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