Spring Boot -01- 快速入門篇(圖文教程)

肖朋偉發表於2018-11-20

Spring Boot -01- 快速入門篇(圖文教程)

今天開始不斷整理 Spring Boot 2.0 版本學習筆記,大家可以在部落格看到我的筆記,然後大家想看視訊課程也可以到【慕課網】手機 app,去找【Spring Boot 2.0 深度實踐】的課程,令人開心的是,課程完全免費!

什麼是 Spring Boot?

在這裡插入圖片描述

Spring Boot 是由 Pivotal 團隊提供的全新框架。Spring Boot 是所有基於 Spring Framework 5.0 開發的專案的起點。Spring Boot 的設計是為了讓你儘可能快的跑起來 Spring 應用程式並且儘可能減少你的配置檔案。

設計目的: 用來簡化新 Spring 應用的初始搭建以及開發過程。

從最根本上來講,Spring Boot 就是一些庫的集合,它能夠被任意專案的構建系統所使用。它使用 “習慣優於配置” (專案中存在大量的配置,此外還內建一個習慣性的配置)的理念讓你的專案快速執行起來。用大佬的話來理解,就是 spring boot 其實不是什麼新的框架,它預設配置了很多框架的使用方式,就像 maven 整合了所有的 jar 包,spring boot 整合了所有的框架,總結一下及幾點:

(1)為所有 Spring 開發提供一個更快更廣泛的入門體驗。

(2)零配置。無冗餘程式碼生成和XML 強制配置,遵循“約定大於配置” 。

(3)整合了大量常用的第三方庫的配置, Spring Boot 應用為這些第三方庫提供了幾乎可以零配置的開箱即用的能力。

(4)提供一系列大型專案常用的非功能性特徵,如嵌入式伺服器、安全性、度量、執行狀況檢查、外部化配置等。

(5)Spring Boot 不是Spring 的替代者,Spring 框架是通過 IOC 機制來管理 Bean 的。Spring Boot 依賴 Spring 框架來管理物件的依賴。Spring Boot 並不是Spring 的精簡版本,而是為使用 Spring 做好各種產品級準備

Spring Boot 在應用中的角色

Spring Boot 是基於 Spring Framework 來構建的,Spring Framework 是一種 J2EE 的框架(什麼是 J2EE?
Spring Boot 是一種快速構建 Spring 應用
Spring Cloud 是構建 Spring Boot 分散式環境,也就是常說的雲應用
Spring Boot 中流砥柱,承上啟下

在這裡插入圖片描述

環境準備

Maven 安裝與環境變數配置

(1)Maven 安裝:

  • 在官網下載:http://maven.apache.org/download.cgi

在這裡插入圖片描述

(2)Maven 配置環境變數:

解壓到一個路徑,然後配置環境變數:

  • 新建變數名:MAVEN_HOME 變數值:D:\server\apache-maven-3.6.0(這是我的 MAVEN 路徑)
  • 編輯變數名:Path 在最前面加上:%MAVEN_HOME%\bin

(3)檢查是否配置成功:

在命令列輸入:

mvn -V

然後會一大堆東西:
在這裡插入圖片描述

(4)配置 maven 倉庫:

1.開啟 maven 資料夾下的 config 資料夾下的 settings.xml;
2.找到 localRepository 標籤,此時是被註釋掉的,我們解除註釋,然後配置一個路徑,例如:D:/space/MavenRepository/maven_jar,這樣以後 MAVEN 管理下載的jar 包都會在這個路徑下。
【注意】:注意結點的位置,先找到註釋掉的部分,貼在下面

<localRepository>D:\space\MavenRepository\maven_jar</localRepository>

在這裡插入圖片描述

3.配置遠端倉庫,找到 mirrors 標籤

<!--遠端倉庫-->
<mirror>
  <id>aliyun</id>
  <name>aliyun Maven</name>
  <mirrorOf>*</mirrorOf>
   <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>

在這裡插入圖片描述

4.當然我們需要先建這樣一個目錄結構,然後還要把settings.xml 複製一份到 D:/space/MavenRepository 下

在這裡插入圖片描述

(5)在 idea 配置 maven:
點選【File】>【Settings】>搜尋【Maven】,按截圖配置安裝目錄和選擇剛剛 settings 配置檔案;
在這裡插入圖片描述
選擇完settings之後,本地倉庫自動改成settings檔案中配置的;點選apply,再點選ok即配置完成。


使用 idea 快速搭建 Spring Boot

第一步:新建 Spring Initializr 專案:

在這裡插入圖片描述

(1)選擇 Spring Initializr
(2)選擇 SDK,點選【new】這裡就是使用 JAVA SDK 要求版本 1.8+,選擇你預設安裝在 C:\Program Files\Java\jdk1.8.0_191 目錄:
在這裡插入圖片描述

(3)然後選擇預設的 url (不用管)點選【Next】:

在這裡插入圖片描述

(4)然後填寫一下專案的資訊:

在這裡插入圖片描述

(5)先勾選上 Web 依賴:
在這裡插入圖片描述

(6)勾選 SQl 下的 MySQL,MyBatis 依賴:
(根據自己的專案選擇,後面可加)
在這裡插入圖片描述

(7)選擇好專案的位置,點選【Finish】:

在這裡插入圖片描述

(7)如果是第一次配置 Spring Boot 的話可能需要等待一會兒 IDEA 下載相應的 依賴包,預設建立好的專案結構如下:

在這裡插入圖片描述

專案結構還是看上去挺清爽的,少了很多配置檔案,我們來了解一下預設生成的有什麼:

  • SpringbootApplication: 一個帶有 main() 方法的類,用於啟動應用程式
  • SpringbootApplicationTests:一個空的 Junit 測試了,它載入了一個使用 Spring Boot 字典配置功能的 Spring 應用程式上下文
  • application.properties:一個空的 properties 檔案,可以根據需要新增配置屬性
  • pom.xml: Maven 構建說明檔案

第二步:HelloController

在 【main/java/com.xpwi.springboot】包下新建一個【HelloController】:

在這裡插入圖片描述

package com.xpwi.springboot;

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

/**
 * 測試控制器
 *
 * @author: @肖朋偉CSDN
 * @create: 2018-11-18
 */
@RestController
public class HelloController {

    @RequestMapping("/hello")
    public String hello() {
        return "Hello Spring Boot!";
    }
}

第三步:利用 IDEA 啟動 Spring Boot

(1)我們回到 SpringbootApplication 這個類中,然後右鍵點選執行:

在這裡插入圖片描述

(2)會提示 Maven 導包,點選 import
在這裡插入圖片描述

(3)注意:我們之所以在上面的專案中沒有手動的去配置 Tomcat 伺服器,是因為 Spring Boot 內建了 Tomcat
等待一會兒就會看到下方的成功執行的提示資訊:

在這裡插入圖片描述

(4)此時,可以看到我們的 Tomcat 執行在 8080 埠,我們來訪問下面地址試一下:

http://localhost:8080/hello

在這裡插入圖片描述

Spring Boot 專案檔案介紹

一、解析 pom.xml 檔案:

(1)讓我們來看看預設生成的 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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.xpwi</groupId>
    <artifactId>springboot</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>springboot</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.0.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <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>

(2)我們可以看到一個比較陌生一些的標籤 ,這個標籤是在配置 Spring Boot 的父級依賴:

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.0.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

有了這個,當前的專案才是 Spring Boot 專案,spring-boot-starter-parent 是一個特殊的 starter ,它用來提供相關的 Maven 預設依賴,使用它之後,常用的包依賴就可以省去 version 標籤。

關於具體 Spring Boot 提供了哪些 jar 包的依賴,我們可以檢視本地 Maven 倉庫下:\repository\org\springframework\boot\spring-boot-dependencies\2.1.0.RELEASE\spring-boot-dependencies-2.1.0.RELEASE.pom 檔案來檢視,挺長的...

二、應用入口類 SpringbootApplication.java

Spring Boot 專案通常有一個名為 *Application 的入口類,入口類裡有一個 main 方法, 這個 main 方法其實就是一個標準的 Javay 應用的入口方法。

@SpringBootApplication 是 Spring Boot 的核心註解,它是一個組合註解,該註解組合了:@Configuration@EnableAutoConfiguration、@ComponentScan; 若不是用 @SpringBootApplication 註解也可以使用這三個註解代替。

  • 其中,@EnableAutoConfiguration 讓 Spring Boot 根據類路徑中的 jar 包依賴為當前專案進行自動配置,例如,新增了 spring-boot-starter-web 依賴,會自動新增 Tomcat 和 Spring MVC 的依賴,那麼 Spring Boot 會對 Tomcat 和 Spring MVC 進行自動配置。
  • Spring Boot 還會自動掃描 @SpringBootApplication 所在類的同級包以及下級包裡的 Bean ,所以入口類建議就配置在 grounpID + arctifactID 組合的包名下(這裡為 com.xpwi.springboot 包)

三、Spring Boot 的配置檔案:

Spring Boot 使用一個全域性的配置檔案 application.properties 或 application.yml,放置在【src/main/resources】目錄或者類路徑的 /config 下。

Spring Boot 不僅支援常規的 properties 配置檔案,還支援 yaml 語言的配置檔案。yaml 是以資料為中心的語言,在配置資料的時候具有物件導向的特徵。

Spring Boot 的全域性配置檔案的作用是對一些預設配置的配置值進行修改。

修改 properties 配置檔案例項:

(1)開啟 resources 下的 application.properties

在這裡插入圖片描述

(2)在這裡我們可以設定訪問的埠,將 Tomcat 預設埠設定為 8080 (預設的不修改) ,並將預設的訪問路徑從 “/” 修改為 “/cn” 時,再訪問 http://localhost:8080/ 是什麼都沒有的,此時要訪問 hello 是要使用 http://localhost:8080/cn/hello

在這裡插入圖片描述

注意:如果是 yml 需要在 “:” 後加一個空格,幸好 IDEA 很好地支援了 yml 檔案的格式有良好的程式碼提示;
我們可以自己配置多個屬性

(3)使用 yml 檔案作為配置檔案,我們直接把 .properties 字尾的檔案刪掉,使用 .yml 檔案來進行簡單的配置

在這裡插入圖片描述

(4)在然後使用在我們的 HelloController.java 類中使用 @Value 來獲取配置屬性,程式碼(請看註釋):

package com.xpwi.springboot;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * 測試控制器
 *
 * @author: @肖朋偉CSDN
 * @create: 2018-11-18
 */
@RestController
public class HelloController {

    // 獲取.yml 檔案中值
    @Value("${name}")
    private String name;

    // 獲取 age
    @Value("${csdnUrl}")
    private String csdnUrl;

    //路徑對映,對應瀏覽器訪問的地址,訪問該路徑則執行下面函式
    @RequestMapping("/hello")
    public String hello() {
        return name + " CSDN 部落格:"+ csdnUrl;
    }
}

(5)重啟 Spring Boot ,輸入地址:http://localhost:8080/hello 能看到正確的結果:

在這裡插入圖片描述

【注意】:此時如果你第一次使用 idea 出現中文亂碼,解決辦法:

在這裡插入圖片描述

(6)【注意】: 我們並沒有在 yml 檔案中註明屬性的型別,而是在使用的時候定義的。你也可以在配置檔案中使用當前配置:

在這裡插入圖片描述

(7)任然可以得到正確結果:

在這裡插入圖片描述

(8)【問題】: 這樣寫配置檔案繁瑣而且可能會造成類的臃腫,因為有許許多多的 @Value 註解。

可以,封裝配置資訊

封裝配置資訊使用方法:

(1)application.yml 檔案內容如下:
在這裡插入圖片描述

(2)新建 author.java 和 HelloController.java 同級,內容如下:

package com.xpwi.springboot;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Component
@ConfigurationProperties(prefix = "author")
public class author {
    private  String name;

    private  String csdnUrl;

    public String getCsdnUrl() {
        return csdnUrl;
    }

    public void setCsdnUrl(String csdnUrl) {
        this.csdnUrl = csdnUrl;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

(3)此時可能會報錯,如果報錯,開啟 pom.xml 檔案,新增內容(注意位置):

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>

在這裡插入圖片描述

(4)重新編寫 HelloController 類,內容如下:

package com.xpwi.springboot;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * 測試控制器
 *
 * @author: @肖朋偉CSDN
 * @create: 2018-11-18
 */
@RestController
public class HelloController {

    // 獲取.yml 檔案中值
    //@Value("${name}")
    //private String name;

    // 獲取 age
    //@Value("${csdnUrl}")
    //private String csdnUrl;

    @Autowired
    private author author;

    //路徑對映,對應瀏覽器訪問的地址,訪問該路徑則執行下面函式
    @RequestMapping("/hello")
    public String hello() {
        return "名字:" + author.getName() + " 地址:" + author.getCsdnUrl();
    }
}

(5)重啟 Spring Boot,訪問瀏覽器:

http://localhost:8080/hello

在這裡插入圖片描述

【提示】:我們可以把配置資訊封裝成一個類,首先在我們的 name 和 age 前加一個 student 字首,然後新建一個 StudentProperties 的類用來封裝這些資訊,並用上兩個註解:

  • @Component:表明當前類是一個 Java Bean
  • @ConfigurationProperties(prefix = "author"):表示獲取字首為 author 的配置資訊

轉載請註明出處:肖朋偉:https://blog.csdn.net/qq_40147863/article/details/84194493

更多文章連結:

相關文章