一、简介
Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目标是用来简化新 Spring 利用的初始搭建以及开发过程。该框架应用了特定的形式来进行配置,从而使开发人员不再须要定义样板化的配置。
Spring Boot 的长处疾速开发,特地适宜构建微服务零碎,另外给咱们封装了各种常常应用的套件,比方 mybatis、hibernate、redis、mongodb 等。
二、疾速入门
本文咱们将学习如何疾速创立一个 Spring Boot 利用。通过这个列子对 Spring Boot 有一个 初步的理解,并体验其构造简略,疾速开发的个性。
三、创立我的项目
Spring 官网提供了十分不便的工具 Spring Initalizr 来帮忙咱们创立 Spring Boot 利用。
1. 应用 Spring Initalizr 页面创立
第一步:拜访 Spring Initializr:https://start.spring.io/
- Project:应用什么构建工具,Maven 还是 Gradle;
- Language:应用什么编程语言,Java
- Spring Boot:选用的 Spring Boot 版本;这里将应用以后最新的
2.6.2
版本。 - Project Metadata:我的项目的元数据;其实就是 Maven 我的项目的根本元素
- Dependencies:抉择要退出的 Spring Boot 组件;本文将实现一个 Http 接口,所以能够抉择 Web 组件,只须要输出 Web,页面会主动联想显示匹配的可选组件:
第二步 :点击 “Generate Project” 按钮生成我的项目;此时浏览器会下载一个与下面Artifact
名称一样的压缩包。
第三步:解压我的项目包,并用编译器以 Maven 我的项目导入,以 IntelliJ IDEA 为例:
- 抉择解压后的我的项目文件夹,点击 OK
- 点击:Import project from external model,并抉择 Maven,点击 Next 到底为止。
- 若你的环境有多个版本的 JDK,留神到抉择 Java SDK 的时候请抉择 Java 8(具体依据你在第一步中抉择的 Java 版本为准)
2. 应用 IntelliJ IDEA 创立
如果是应用 IntelliJ IDEA 来写 Java 程序的话,那么还能够间接在编译器中创立 Spring Boot 利用。
第一步 :菜单栏中抉择:File => New => Project..,咱们能够看到如下图所示的创立性能窗口。
其中 Initial Service Url 指向的地址就是 Spring 官网提供的 Spring Initializr 工具地址,所以这里创立的工程实际上也是基于它的 Web 工具来实现的。
第二步 :点击 Next,期待片刻后,咱们能够看到如下图所示的工程信息窗口:
其实内容就跟咱们用 Web 版的 Spring Initializr 是截然不同的,跟之前在页面上一样填写即可。
第三步 :持续点击 Next,进入抉择 Spring Boot 版本和依赖治理的窗口:
第四步:点击 Next,进入最初对于工程物理存储的一些细节。最初,点击 Finish 就能实现工程的构建了。
四、我的项目构造
通过下面步骤实现了根底我的项目的创立。如上图所示,Spring Boot 的根底构造共三个文件
src/main/java
下的程序入口:Chapter1Application
src/main/resources
下的配置文件:application.properties
src/test/
下的测试入口:Chapter1ApplicationTests
生成的 Chapter1Application
和Chapter1ApplicationTests
类都能够间接运行来启动以后创立的我的项目,因为目前该我的项目未配合任何数据拜访或 Web 模块,程序会在加载完 Spring 之后完结运行。
五、我的项目依赖
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.2</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.chapter</groupId>
<artifactId>chapter1</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>chapter1</name>
<description>SpringBoot 第一章 </description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
关上pom.xml
,一起来看看 Spring Boot 我的项目的依赖:
如上所示,次要有四个局部:
- 我的项目元数据:创立时候输出的 Project Metadata 局部,也就是 Maven 我的项目的根本元素,包含:groupId、artifactId、version、name、description 等
- parent:继承
spring-boot-starter-parent
的依赖治理,管制版本与打包等内容 - dependencies:我的项目具体依赖,这里蕴含了
spring-boot-starter-web
用于实现 HTTP 接口(该依赖中蕴含了 Spring MVC);spring-boot-starter-test
用于编写单元测试的依赖包。更多功能模块的应用咱们将在前面的教程中逐渐开展。 - build:构建配置局部。默认应用了
spring-boot-maven-plugin
(Spring Boot Maven 插件),配合spring-boot-starter-parent
就能够把 Spring Boot 利用打包成 JAR 来间接运行。
六、编写一个 HTTP 接口
- 创立
TestController
类,内容如下:
package com.chapter.chapter1;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class TestController {@RequestMapping("/test")
public String index() {return "Hello World";}
}
@RestController:相当于 @Controller+@ResponseBody 两个注解的联合,返回 json 数据不须要在办法后面加 @ResponseBody 注解了
至此已实现指标,通过 Maven 构建了一个空白 Spring Boot 我的项目,再通过引入 web 模块实现了一个简略的申请解决。
- 启动主程序,应用 PostMan 等工具发动申请:
http://localhost:8080/test
,能够看到页面返回:Hello World
七、编写单元测试用例
关上的 src/test/
下的测试入口 Chapter1ApplicationTests
类。上面编写一个简略的单元测试来模仿 http 申请,具体如下:
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
class Chapter1ApplicationTests {
private MockMvc mvc;
@BeforeEach
public void setUp() {mvc = MockMvcBuilders.standaloneSetup(new TestController()).build();}
@Test
public void getHello() throws Exception {mvc.perform(MockMvcRequestBuilders.get("/test").accept(MediaType.APPLICATION_JSON))
.andExpect(status().isOk())
.andExpect(content().string(equalTo("Hello World")));
}
}
应用 MockServletContext
来构建一个空的 WebApplicationContext
,这样咱们创立的TestController
就能够在 @BeforeEach
函数中创立并传递到 MockMvcBuilders.standaloneSetup()
函数中。
留神引入上面内容,让 status、content、equalTo 函数可用
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;
至此已实现指标,通过 Maven 构建了一个空白 Spring Boot 我的项目,再通过引入 web 模块实现了一个简略的申请解决。