Spring Boot入門知識(基於Spring Boot2.2.2版本系列教程)

ramostear 發佈 2020-01-07T14:03:27+00:00

在本文中,主要內容包括什麼是Spring Boot,優點,主要功能以及使用Spring Boot創建一個簡單的應用程式。Spring Boot是什麼?

在本文中,主要內容包括什麼是Spring Boot,優點,主要功能以及使用Spring Boot創建一個簡單的應用程式。

Spring Boot是什麼?

​ Spring Boot是對Spring Framework的增強和擴展,它極大的消除了使用Spring Framework時所需的大量樣板代碼的配置,與此同時,Spring Boot提供的很多Starter能讓開發人員更快的完成系統的開發。

Spring Boot主要的優勢

相比於Spring Framework,使用Spring Boot能為開發者帶來以下優勢:

  • 為使用Spring Framework帶來更好的體驗
  • 開箱即用,Spring Boot提供了大量的默認配置,根據需求,開發者可以很輕鬆覆蓋原有配置
  • 提供了一些列優秀的功能插件,如嵌入式伺服器,安全檢查,系統指標,運行狀況檢查以及外部化配置
  • 推薦基於Java代碼的配置方式,可以很少或完全不使用XML配置應用

Spring Boot的核心功能

與Spring Framework相比較,下面列舉Spring Boot的一些核心功能,Spring Boot的功能不局限於下面所列舉:

  1. Spring Boot Starters
  2. Spring Boot AutoConfiguration
  3. 優雅的配置管理
  4. Spring Boot Actuator
  5. 易於使用的嵌入式Servlet容器

接下來,將詳細說明Spring Boot的核心功能。

1. Spring Boot Starters

​ Spring Boot提供了許多開箱即用的Starter模塊,例如Spring MVC,JPA,MySQL,Spring Security,Solor,Hibernate,Freemarker等等。這些Starter已經預先配置好了最常用的依賴庫,因此你不必像使用Spring那樣去考慮各依賴庫之間的版本兼容問題。

​ 如果你希望在項目中使用Hibernate框架且基於JPA實現,你只需要在pom文件中加入spring-boot-starter-data-jpa即可,Spring Boot會自動加載所需要的依賴庫。

2. Spring Boot AutoConfiguration

​ Spring Boot另一個革命性的功能是自動配置,有了自動配置功能,你可以摒棄之前使用XML手動配置應用的方式,通過幾行代碼,即可完成應用系統複雜的配置工作。

​ Spring Boot會自動根據某些特定的條件自動完成Bean的註冊工作,下面是觸發Spring Boot完成自動注入的一些條件:

  • 當類路徑下存在特定的且可用的類時
  • 當Spring Bean存在/不存在時
  • 當存在特定的系統屬性時
  • 當缺少配置文件時

例如,當你的項目中存在spring-mvc的依賴庫時,Spring Boot會猜測你將構建一個基於Spring MVC的Web應用程式,在你未編寫任何代碼前,Spring Boot會嘗試註冊一個默認的DispatcherServlet。如果你的類路徑下包含得有任何嵌入式資料庫驅動程序(H2或HSQL),在未顯示配置DataSource前,Spring Boot會自動配置一個DataSource得Bean。

3. 優雅的配置管理

​ Spring Boot支持使用@PropertySource註解完成外部化可配置屬性。使用Spring Boot的配置鍵值對,可以將鍵值對與Bean屬性進行綁定,另外,Spring Boot還提供為不同環境提供針對性的配置文件,你只需要簡單的幾行代碼即可完成配置管理。

4. Spring Boot Actuator

​ 很多時候,我們都需要去收集在生產環境中運行的應用程式的諸多性能參數,而Spring Boot Actuator已經為我們提供了類似的許多功能,我們無需編寫大量的代碼,只需簡單的一些配置,便可監控我們的應用程式,收集指標數據,了解URL請求狀況等。例如,我們可以通過引入Spring Boot Actuator而獲得如下的一些便利:

  • 獲取應用程式中所有Spring Bean的詳細信息
  • 獲取應用程式運行狀況信息
  • 獲取HTTP跟蹤信息
  • 獲取應用程式日誌信息
  • 獲取應用程式中的計劃任務信息
  • 獲取應用程式中的路徑映射列表信息(Web應用)

5. 易於使用的嵌入式Servlet容器

​ 以往,我們在構建Web應用程式時,需要手動創建WAR類型的程序包,然後將其部署到外部伺服器(例如Tomcat)上才可以運行應用程式,現在,當你使用Spring Boot時,你可以很方便的創建JAR類型的程序包,且該類型的程序包已經內嵌了Servlet容器,你可以在不依賴於外部伺服器的情況下運行Web應用程式。

6. 系統要求

​ Spring Boot 2.2.2.RELEASE最低要求Java 8,同時也支持Java 13。此外,還需要Spring Framework 5.2.2.RELEASE或更高的版本。

6.1 構建工具本版

在開始使用Spring Boot 2.2.2之前,你應該先檢查本地的構建工具是否滿足以下的配置要求:



6.2 Servlet容器

Spring Boot 2.2.2支持以下的嵌入式Servlet容器:



除此之外,你還可以將Spring Boot應用程式打包為WAR包,部署到支持Servlet 3.1及以上版本的外部容器中。

7. 為什麼使用Spring Boot?

與直接使用Spring相比,使用Spring Boot你將如下的一些優勢(不局限於列舉範圍):

  1. 開發基於Spring的應用變得更簡單容易
  2. 開箱即用的特性減少的開發時間,提高了開發效率
  3. Spring Boot避免了大量的樣板代碼和XML配置
  4. 能夠很輕鬆的與其他Spring生態系統集成(例如Spring JDBC,Spring ORM,Spring Data,Spring Security)
  5. Spring Boot的自動注入能夠幫助開發人員減少工作量
  6. Spring Boot提供了嵌入式的Servlet容器,方便開發人員對應用進行測試

8.編寫第一個Spring Boot應用程式

​ 本小節將基於Java 8 和Maven 3.0+構建一個簡單的Spring Boot Web應用程式,通過瀏覽器訪問http://localhost:8080 ,在頁面中輸出」Hello Spring Boot「語句。

​ 在開始編寫應用程式之前,先檢查本地環境是否滿足開發要求。首先,打開作業系統終端,檢查Java的版本信息,以Microsoft Windows 10 為例:

然後,在終端輸入mvn -v檢查Maven的版本信息

8.1 創建POM

首先,我們需要創建一個工程目錄spring-boot-firstapp,然後在其目錄下創建一個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 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.2.2.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.ramostear</groupId>
    <artifactId>spring-boot-firstapp</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>spring-boot-firstapp</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</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

最後,打開你的作業系統終端,導航到spring-boot-firstapp目錄下,執行mvn package命令進行測試,執行此命令後,spring-boot-firstapp目錄下會生成多個文件夾:

spring-boot-firstapp
├─src
    ├─main
    │  ├─java
    │  │  └─com
    │  │      └─ramostear
    │  │          └─springbootfirstapp
    │  │                  SpringBootFirstappApplication.java
    │  │                  
    │  └─resources
    │          application.properties
    │          
    └─test
    └─java
    └─com
    └─ramostear
    └─springbootfirstapp
      └─SpringBootFirstappApplicationTests.java

8.2 添加Web依賴

由於我們要創建一個Web應用程式,因此需要向pom文件中加入相關的web依賴。現在我們使用spring boot構建web應用程式,只需在pom文件的dependencies節點中加入如下的依賴即可:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

在這裡,你會發現我們並沒有填寫spring-boot-starter-web依賴庫的版本號,該依賴庫的版本將由spring-boot-starter-parent統一管理。

8.3 編寫代碼

現在,我們要創建一個Java文件,完成向瀏覽器頁面輸入」Hello Spring Boot「的功能。在src/main/java/com/ramostear/springbootfirstapp目錄下創建一個名為HelloSpringBoot.java的文件,並用你喜歡的文本編輯器打開文件並寫入以下代碼:

package com.ramostear.springbootfirstapp;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @ClassName HelloSpringBoot
 * @Description TODO
 * @Author ramostear
 * @Date 2020/1/7 0007 15:19
 * @Version 1.0
 **/
@RestController
public class HelloSpringBoot {

    @GetMapping("/")
    public String sayHello(){
        return "Hello Spring Boot";
    }
}

RestController註解會將字符串」Hello Spring Boot「直接返回到頁面,而不是返回一個視圖;GetMapping時RequestMapping的一種簡寫。

8.4 運行示例

​ 由於使用了spring-boot-starter-parent依賴,因此可以在終端使用mvn spring-boot:run命令來運行本次示例,命令執行成功後,你可以在控制台查看到以下的輸出:

mvn spring-boot:run
.   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.2.2.RELEASE)

...

2020-01-07 15:26:04.868  INFO 3100 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''
...

現在,你可以打開瀏覽器並輸入http://localhost:8080,你可以在頁面上觀察到如下的信息:


關鍵字: