1. 程式人生 > 其它 >SpringBoot快速入門(一)

SpringBoot快速入門(一)

本文內容

  1. SpringBoot概述
  2. SpringBoot快速入門
  3. SpringBoot起步依賴原理分析
  4. SpringBoot配置
  5. SpringBoot整合其他框架

1、SpringBoot概述

1.1、Spring概念

  • SpringBoot提供了一種快速使用Spring的方式,基於約定優於配置的思想,可以讓開發人員不必在配置與邏
    輯業務之間進行思維的切換,全身心的投入到邏輯業務的程式碼編寫中,從而大大提高了開發的效率,一定程度
    上縮短了專案週期。 2014 年 4 月, Spring Boot 1.0.0 釋出。 Spring的頂級專案之一(https://spring.io)。

  • Spring缺點

    1. 配置繁瑣
      雖然Spring的元件程式碼是輕量級的,但它的配置卻是重量級的。一開始, Spring用XML配置,而且是很多
      XML配置。 Spring 2.5引入了基於註解的元件掃描,這消除了大量針對應用程式自身元件的顯式XML配置。Spring 3.0引入了基於Java的配置,這是一種型別安全的可重構配置方式,可以代替XML。
      所有這些配置都代表了開發時的損耗。因為在思考Spring特性配置和解決業務問題之間需要進行思維切換,所以編寫配置擠佔了編寫應用程式邏輯的時間。和所有框架一樣, Spring實用,但它要求的回報也不少。
    2. 依賴繁瑣
      專案的依賴管理也是一件耗時耗力的事情。在環境搭建時,需要分析要匯入哪些庫的座標,而且還需要分析匯入與之有依賴關係的其他庫的座標,一旦選錯了依賴的版本,隨之而來的不相容問題就會嚴重阻礙專案的開發進度。
  • SpringBoot 功能

    1. 自動配置
      Spring Boot的自動配置是一個執行時(更準確地說,是應用程式啟動時)的過程,考慮了眾多因素,才決定Spring配置應該用哪個,不該用哪個。該過程是SpringBoot自動完成的。

    2. 起步依賴
      起步依賴本質上是一個Maven專案物件模型(Project Object Model, POM),定義了對其他庫的傳遞依賴
      ,這些東西加在一起即支援某項功能。簡單的說,起步依賴就是將具備某種功能的座標打包到一起,並提供一些預設的功能。

    3. 輔助功能
      提供了一些大型專案中常見的非功能性特性,如嵌入式伺服器、安全、指標,健康檢測、外部配置等

Spring Boot 並不是對 Spring 功能上的增強,而是提供了一種快速使用 Spring 的方式。

1.2、SpringBoot 快速入門

需求:搭建SpringBoot工程,定義HelloController.hello()方法,返回”Hello SpringBoot!” 。

實現步驟

  1. 建立Maven專案

  2. 匯入SpringBoot起步依賴

    <!--springboot工程需要繼承的父工程-->
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.1.8.RELEASE</version>
        </parent>
    
  3. 定義Controller

    @RestController
    public class HelloController {
    
        @RequestMapping("/hello")
        public String hello(){
            return " hello Spring Boot !";
        }
    }
    
  4. 編寫引導類

    /**
     * 引導類。 SpringBoot專案的入口
     */
    @SpringBootApplication
    public class HelloApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(HelloApplication.class,args);
        }
    }
    
  5. 啟動測試

小結

  • SpringBoot在建立專案時,使用jar的打包方式。
  • SpringBoot的引導類,是專案入口,執行main方法就可以啟動專案。
  • 使用SpringBoot和Spring構建的專案,業務程式碼編寫方式完全一樣。

1.3、起步依賴原理分析

  1. spring-boot-starter-parent
  2. spring-boot-starter-web

小結

  • 在spring-boot-starter-parent中定義了各種技術的版本資訊,組合了一套最優搭配的技術版本。
  • 在各種starter中,定義了完成該功能需要的座標合集,其中大部分版本資訊來自於父工程。
  • 我們的工程繼承parent,引入starter後,通過依賴傳遞,就可以簡單方便獲得需要的jar包,並且不會存在
    版本衝突等問題。

1.4、SpringBoot 配置

1.4.1、配置檔案分類
  • SpringBoot是基於約定的,所以很多配置都有預設值,但如果想使用自己的配置替換預設配置的話,就可以使用application.properties或者application.ymlapplication.yaml)進行配置

    • properties:

      server.port=8080

    • yml:

      server:
      port: 8080

  • SpringBoot提供了2種配置檔案型別: properteis和yml/yaml

  • 預設配置檔名稱: application

  • 在同一級目錄下優先順序為: properties > yml > yaml

1.4.2、yaml

YAML全稱是 YAML Ain't Markup Language 。 YAML是一種直觀的能夠被電腦識別的的資料資料序列化格式,並且容易被人類閱讀,容易和指令碼語言互動的,可以被支援YAML庫的不同的程式語言程式匯入,比如: C/C++, Ruby, Python, Java, Perl, C#, PHP等。 YML檔案是以資料為核心的,比傳統的xml方式更加簡潔。YAML檔案的副檔名可以使用.yml或者.yaml 。

  • properties:

    server.port=8080
    server.address=127.0.0.1 
    
  • xml:

    <server>
    	<port>8080</port>
    	<address>127.0.0.1</address>
    </server>
    
  • yml

    server:
    	port: 8080
    	address: 127.0.0.1
    

    簡潔,以資料為核心


  1. YAML: 基本語法

    • 大小寫敏感
    • 資料值前邊必須有空格,作為分隔符
    • 使用縮排表示層級關係
    • 縮排時不允許使用Tab鍵,只允許使用空格(各個系統 Tab對應的 空格數目可能不同,導致層次混亂)
    • 縮排的空格數目不重要,只要相同層級的元素左側對齊即可
    • 表示註釋,從這個字元一直到行尾,都會被解析器忽略。

  2. YAML:資料格式

    • 物件(map):鍵值對的集合。

      person:
      	name: zhangsan
      # 行內寫法
      person: {name: zhangsan}
      
    • 陣列:一組按次序排列的值

      address:
      	- beijing
      	- shanghai
      # 行內寫法
      address: [beijing,shanghai]
      
    • 純量:單個的、不可再分的值

      msg1: 'hello \n world' # 單引忽略轉義字元
      msg2: "hello \n world" # 雙引識別轉義字元
      
  3. YAML:引數引用

    name: lisi
    
    person:
    	name: ${name} # 引用上邊定義的name值
    

小結

  1. 配置檔案型別
    • properties:和以前一樣
    • yml/yaml:注意空格
  2. yaml: 簡潔,以資料為核心
    • 基本語法
      • 大小寫敏感
      • 資料值前邊必須有空格,作為分隔符
      • 使用空格縮排表示層級關係,相同縮排表示同一級
    • 資料格式
      • 物件
      • 陣列: 使用 “- ”表示陣列每個元素
      • 純量
    • 引數引用
      • ${key}
1.4.3、讀取配置檔案內容
  1. @Value
  2. Environment
  3. @ConfigurationProperties
1.4.4、profile

在開發Spring Boot應用時,通常同一套程式會被安裝到不同環境,比如:開發、測試、生產等。其中資料庫地址、伺服器埠等等配置都不同,如果每次打包時,都要修改配置檔案,那麼非常麻煩。 profile功能就是來進行動態配置切換的。

  1. profile配置方式
  • 多profile檔案方式
  • yml多文件方式
  1. profile啟用方式
    • 配置檔案
    • 虛擬機器引數
    • 命令列引數
1.4.5、內部配置載入順序

Springboot程式啟動時,會從以下位置載入配置檔案:

  1. file:./config/:當前專案下的/config目錄下
  2. file:./ :當前專案的根目錄
  3. classpath:/config/: classpath的/config目錄
  4. classpath:/ : classpath的根目錄

載入順序為上文的排列順序,高優先順序配置的屬性會生效

1.4.6、外部配置載入順序

通過官網檢視外部屬性載入順序:
https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html

1.5、SpringBoot 整合其他框架

程式碼略,之後有空再補