一、 简介

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

生成的Chapter1ApplicationChapter1ApplicationTests类都能够间接运行来启动以后创立的我的项目,因为目前该我的项目未配合任何数据拜访或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模块实现了一个简略的申请解决。