Spring Boot 2.x基礎教程:快速入門

2021-02-19 程序猿DD

點擊藍色「程序猿DD」關注我喲

來源:http://t./

《Star最多的Spring Boot教程繼續更新了》

牛皮吹過了!

Git倉庫和博客專題頁也改版完成!

是時候開始正式更新啦!

簡介

在您第1次接觸和學習Spring框架的時候,是否因為其繁雜的配置而退卻了?在你第n次使用Spring框架的時候,是否覺得一堆反覆黏貼的配置有一些厭煩?那麼您就不妨來試試使用Spring Boot來讓你更易上手,更簡單快捷地構建Spring應用!

Spring Boot讓我們的Spring應用變的更輕量化。我們不必像以前那樣繁瑣的構建項目、打包應用、部署到Tomcat等應用伺服器中來運行我們的業務服務。通過Spring Boot實現的服務,只需要依靠一個Java類,把它打包成jar,並通過 java-jar命令就可以運行起來。這一切相較於傳統Spring應用來說,已經變得非常的輕便、簡單。

總結一下Spring Boot的主要優點:

為所有Spring開發者更快的入門

開箱即用,提供各種默認配置來簡化項目配置

內嵌式容器簡化Web項目

沒有冗餘代碼生成和XML配置的要求

快速入門

本文我們將學習如何快速的創建一個Spring Boot應用,並且實現一個簡單的Http請求處理。通過這個例子對Spring Boot有一個初步的了解,並體驗其結構簡單、開發快速的特性。

創建基礎項目

Spring官方提供了非常方便的工具Spring Initializr來幫助我們創建Spring Boot應用。

使用Spring Initializr頁面創建

第一步:訪問Spring Initializr: https://start.spring.io/

如圖所示,幾個選項說明:

Project:使用什麼構建工具,Maven還是Gradle;本教程將採用大部分Java人員都熟悉的Maven,以方便更多讀者入門學習。

Language:使用什麼程式語言,Java、Kotlin還是Groovy;本教程將採用Java為主編寫,以方便更多讀者入門學習。

Spring Boot:選用的Spring Boot版本;這裡將使用當前最新的 2.1.3版本。

Project Metadata:項目的元數據;其實就是Maven項目的基本元素,點開More options可以看到更多設置,根據自己組織的情況輸入相關數據,比如: 

Dependencies:選擇要加入的Spring Boot組件;本文將實現一個Http接口,所以可以選擇Web組件,只需要輸入Web,頁面會自動聯想顯示匹配的可選組件:  點擊」+「之後,就如下圖所示: 

第二步:點擊」Generate Project「按鈕生成項目;此時瀏覽器會下載一個與上面 Artifact名稱一樣的壓縮包。

第三步:解壓項目包,並用編譯器以Maven項目導入,以IntelliJ IDEA為例:

菜單中選擇:File –> New –> Project from Existing Sources... 

選擇解壓後的項目文件夾,點擊OK

點擊:Import project from external model,並選擇Maven,點擊Next到底為止。

若你的環境有多個版本的JDK,注意到選擇Java SDK的時候請選擇Java 8(具體根據你在第一步中選擇的Java版本為準)

由於我們後續會有很多樣例工程,您也可以像我們樣例倉庫那樣,用一個基礎倉庫,每篇文章的樣例以模塊的方式保存,具體形式可見文末的案例倉庫。

使用IntelliJ IDEA創建

如果是使用IntelliJ IDEA來寫Java程序的話,那麼還可以直接在編譯器中創建Spring Boot應用。

第一步:菜單欄中選擇:File => New => Project..,我們可以看到如下圖所示的創建功能窗口。其中Initial Service Url指向的地址就是Spring官方提供的Spring Initializr工具地址,所以這裡創建的工程實際上也是基於它的Web工具來實現的。

第二步:點擊Next,等待片刻後,我們可以看到如下圖所示的工程信息窗口:其實內容就跟我們用Web版的Spring Initializr是一模一樣的,跟之前在頁面上一樣填寫即可。

第三步:繼續點擊Next,進入選擇Spring Boot版本和依賴管理的窗口:在這裡值的我們關注的是,它不僅包含了Spring Boot Starter POMs中的各個依賴,還包含了Spring Cloud的各種依賴。

第四步:點擊Next,進入最後關於工程物理存儲的一些細節。最後,點擊Finish就能完成工程的構建了。

Intellij中的Spring Initializr雖然還是基於官方Web實現,但是通過工具來進行調用並直接將結果構建到我們的本地文件系統中,讓整個構建流程變得更加順暢,還沒有體驗過此功能的Spring Boot/Cloud愛好者們不妨可以嘗試一下這種不同的構建方式。

項目結構解析

通過上面步驟完成了基礎項目的創建。如上圖所示,Spring Boot的基礎結構共三個文件(具體路徑根據用戶生成項目時填寫的Group所有差異):

src/main/java下的程序入口: Chapter11Application

src/main/resources下的配置文件: application.properties

src/test/下的測試入口: Chapter11ApplicationTests

生成的 Chapter11Application和 Chapter11ApplicationTests類都可以直接運行來啟動當前創建的項目,由於目前該項目未配合任何數據訪問或Web模塊,程序會在加載完Spring之後結束運行。

項目依賴解析

打開 pom.xml,一起來看看Spring Boot項目的依賴:

<?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>

<parent>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-parent</artifactId>

<version>2.1.3.RELEASE</version>

<relativePath/> <!-- lookup parent from repository -->

</parent>

<groupId>com.didispace</groupId>

<artifactId>chapter1-1</artifactId>

<version>0.0.1-SNAPSHOT</version>

<name>chapter1-1</name>

<description>Demo project for Spring Boot</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>

如上所示,主要有四個部分:

項目元數據:創建時候輸入的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-starter-parent就可以把Spring Boot應用打包成JAR來直接運行。

編寫一個HTTP接口

@RestController

public class HelloController {

@RequestMapping("/hello")

public String index() {

return "Hello World";

}

}

編寫單元測試用例

打開的 src/test/下的測試入口 Chapter11ApplicationTests類。下面編寫一個簡單的單元測試來模擬http請求,具體如下:

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;

@RunWith(SpringRunner.class)

@SpringBootTest

public class Chapter11ApplicationTests {

private MockMvc mvc;

@Before

public void setUp() throws Exception {

mvc = MockMvcBuilders.standaloneSetup(new HelloController()).build();

}

@Test

public void getHello() throws Exception {

mvc.perform(MockMvcRequestBuilders.get("/hello").accept(MediaType.APPLICATION_JSON))

.andExpect(status().isOk())

.andExpect(content().string(equalTo("Hello World")));

}

}

使用 MockServletContext來構建一個空的 WebApplicationContext,這樣我們創建的 HelloController就可以在 @Before函數中創建並傳遞到 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模塊實現了一個簡單的請求處理。

代碼示例

本文的相關例子可以查看下面倉庫中的 chapter1-1目錄:

如果您覺得本文不錯,歡迎Star支持,您的關注是我堅持的動力!

重磅推薦

我一直都有推薦小馬哥的Spring Boot以及Spring Cloud講座給大家,為什麼沒有推薦別人的呢?主要還是比較認可小馬哥的解讀,不像其他課程那樣千篇一律,缺少自己的思考。

這次小馬哥的書終於出版預售了,我覺得必須要給大推薦:《Spring Boot編程思想》,大家可以直接長按下圖,識別二維碼購買。

推薦閱讀

號外:最近整理了之前編寫的一系列內容做成了PDF,關注我並回復相應口令獲取:

001 :領取《Spring Boot基礎教程》

002 :領取《Spring Cloud基礎教程》

2019

與大家聊聊技術人的斜槓生活

點個「好看」支持一下鴨

點鴨點鴨點鴨

                                                                                                       ↓↓↓

相關焦點

  • Spring Boot 2.0 的快速入門(圖文教程)
    目前,Spring Boot 版本是 2.x 版本。1.1.1 Spring Boot 2.x 特性Spring Boot 2.x 具有哪些生產的特性呢?常用特性如下:SpringApplication 應用類;自動配置;外化配置;內嵌容器;Starter 組件。
  • 芋道 Spring Boot 快速入門
    2. 快速入門本小節,我們搭建 Spring Boot 示例項目,並在其中使用 SpringMVC 來提供一個簡單的 HTTP API。至此,我們已經進行了 Spring Boot 的快速入門。後續,胖友可以閱讀《芋道 Spring Boot SpringMVC 入門》文章,進一步的學習。另外,Spring Boot 自動配置是個很神器,胖友一定一定一定要去閱讀《芋道 Spring Boot 自動配置原理》。
  • Spring Boot 2.x基礎教程:使用Swagger2構建強大的API文檔
    又碰到了運營號直接拿了文章就推,導致沒法標原創。該整合項目的Github:https://github.com/SpringForAll/spring-boot-starter-swagger。如果您覺得它好用,歡迎Star支持我們!
  • Spring Boot 2.x基礎教程:使用MongoDB
    既然稱為NoSQL資料庫,Mongo的查詢語言非常強大,其語法有點類似於面向對象的查詢語言,幾乎可以實現類似關係資料庫單表查詢的絕大部分功能,而且還支持對數據建立索引。但是,MongoDB也不是萬能的,同MySQL等關係型資料庫相比,它們在針對不同的數據類型和事務要求上都存在自己獨特的優勢。
  • Spring Boot 2.x基礎教程:實現文件上傳
    動手試試第一步:創建一個基礎的Spring Boot項目,如果還不會的話就先看看這篇《快速入門》。第二步:在pom.xml中引入模版引擎依賴:<dependency>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-thymeleaf</artifactId
  • Spring Boot入門
    更完整的功能列表可以查看:using-boot-starter-poms(http://docs.spring.io/spring-boot/docs/1.2.3.RELEASE/reference/html/using-boot-build-systems.html#using-boot-starter-poms)添加spring-boot-maven-plugin插件
  • Spring Boot 永遠滴神!10分鐘快速入門
    創建 SpringBoot 應用這裡先說一下,本文我使用的 Spring Boot 版本是 2.5.2 ,要求你本地安裝的 JDK 至少是 1.8 或者更高的版本,Spring Boot 2.x 以上的版本最低要求就是 JDK 1.8 了。官方推薦的版本目前是 jdk8 和 jdk11,因為這倆版本目前是長期維護的。
  • 芋道 Spring Boot MongoDB 入門
    2. 快速入門示例代碼對應倉庫:lab-16-spring-data-mongodb 。本小節,我們會使用 spring-boot-starter-data-mongodb 自動化配置 Spring Data MongoDB 主要配置。
  • 芋道 Spring Boot Elasticsearch 入門
    所以胖友可知,艿艿目前線上使用 spring-data-jest 訪問 Elasticsearch 。下面,我們分別來入門:Spring Data Elasticsearch艿艿:如果胖友還沒安裝 Elasticsearch ,並安裝 IK 插件,可以參考下 《Elasticsearch 極簡入門》 文章,先進行下安裝。
  • 芋道 Spring Boot Redis 入門(上)
    概述2. 快速入門2.1 引入依賴2.2 配置文件2.3 簡單測試2.4 RedisTemplate3. 序列化1. 概述在快速入門 Spring Boot 整合 Redis 之前,我們先來做個簡單的了解。
  • Spring Boot WebFlux Quick Start
    註解的會在第二篇文章講到,下面快速入門用 Spring Webflux 功能性方式實現。例如,添加 spring-boot-starter-webflux 依賴,就可用於構建響應式 API 服務,其包含了 Web Flux 和 Tomcat 內嵌容器等。開發中,很多功能是通過添加 Starter 組件的方式來進行實現。那麼,Spring Boot 2.x 常用的 Starter 組件有哪些呢?
  • Spring Boot 2.X 實戰--Spring Boot 整合 MongoDB
    原始碼倉庫:https://github.com/zhshuixian/learn-spring-boot-2碼云:https://gitee.com/ylooq/learn-spring-boot-2博客:https://blog.csdn.net/u010974701系列文章在線閱讀:掃碼關注「
  • Spring Boot 使用 Graylog 收集日誌
    ;version>0.0.1-SNAPSHOT</version> <name>springboot2_graylog</name> <description>springboot2_graylog</description> <properties>
  • Spring Boot 2.0(四):使用 Docker 部署 Spring Boot
    Docker 技術發展為微服務落地提供了更加便利的環境,使用 Docker 部署 Spring Boot 其實非常簡單,這篇文章我們就來簡單學習下。
  • Spring Boot 2.x 實戰--SQL資料庫(Spring Data JPA)
    大數據小先博客主頁:https://me.csdn.net/u010974701原始碼倉庫:https://github.com/zhshuixian/learn-spring-boot-2上一小節主要介紹了 Spring Boot  2.x 實戰--整合 Log4j2 與 Slf4j 實現日誌列印和輸出到文件。
  • Spring Boot | 一個90後女孩的第一個 Spring Boot 應用
    我是小小,今天是本周的第五篇,本周第五篇將會著重講解 Spring Boot 之 Hello World前言Spring Boot 出現的原因Spring Boot的出現,主要是用來解決 Spring 過去的一些問題,提出了約定優於配置的思想,默認對很多方法進行了設置,使得開發者可以快速的構建項目,集成第三方的內容。使得開發效率大大提升。
  • Spring Boot2 系列教程(三)理解 spring-boot-starter-parent
    繼承自 spring-boot-dependencies,這個裡邊定義了依賴的版本,也正是因為繼承了這個依賴,所以我們在寫依賴時才不需要寫版本號。執行打包操作的配置。自動化的資源過濾。自動化的插件配置。針對
  • Spring Cloud Alibaba基礎教程:Sentinel使用Apollo存儲規則
    如果還沒入門 SentinelDashboard可以通過文末的系列目錄先學習之前的內容。Apollo的話相對複雜一些,這裡不做詳細介紹了,如果還沒有接觸過Apollo的讀者可以查看其官方文檔進一步學習。
  • Spring Boot 2.x基礎教程:Swagger接口分類與各元素排序問題詳解
    作者 | 翟永超來源 | didispace.com/spring-boot-learning-21-2-4/之前通過Spring Boot 2.x基礎教程:使用Swagger2構建強大的API文檔一文,我們學習了如何使用Swagger為Spring Boot項目自動生成API文檔,有不少用戶留言問了關於文檔內容的組織以及排序問題。
  • Spring Cloud快速入門一
    寒假這段時間開始學了下Spring Cloud,發現Spring Cloud如果僅僅是學個怎麼使用,不考慮高可用等情況的話確實很容易入門,廢話不多說,直接上!微服務    個人覺得用通俗易懂的話來講,微服務其實就是「單一職責」,也就是一個服務(或者說應用)只負責處理同一種業務。