一、 简介
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;@RestControllerpublic 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;@SpringBootTestclass 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模块实现了一个简略的申请解决。