1. 程式人生 > 其它 >2 SpringBoot介紹

2 SpringBoot介紹

2 SpringBoot介紹

文件地址:SpringBoot2.x系列教程新紀元之SpringBoot初相見

2.1 概述

SpringBoot誕生背景

現在一些動態語言慢慢的開始流行(Ruby、Groovy、Scala、Node.js)起來了,這時候就越發的顯得傳統的Spring開發方式看起來顯得格外的笨重,顯得Spring的開發缺點很多:

  1. 配置繁多而雜亂;
  2. 開發效率低下而重複;
  3. 專案部署複雜而困難;
  4. 整合第三方庫難度大......

在這樣一個時代背景下,Spring 團隊在現有Spring框架的基礎上釋出了一個新的開發框架---Spring Boot。該框架是由Spring Pivotal 團隊提供的全新框架,其設計目的主要是用來簡化Java Web專案的初始搭建,配置以及開發過程,為我們的開發帶來極大便利!

SpringBoot簡介

官網對SpringBoot的介紹:

Spring Boot makes it easy to create stand-alone, production-grade Spring based Applications that you can "just run".

We take an opinionated view of the Spring platform and third-party libraries so you can get started with minimum fuss. Most Spring Boot applications need minimal Spring configuration.

可知,Spring Boot可以幫助我們輕鬆地創建出一個基於Spring,且能夠直接執行的獨立的生產級應用程式。

而且利用SpringBoot可以很容易的整合Spring和其他第三方庫,更重要的是SpringBoot採用了“約定大於配置”的思想理念,大量的減少了配置檔案的使用,可以讓我們的專案快速的開發部署執行起來。

並且SpringBoot自身就內嵌了Tomcat,Jetty,Undertow等Web伺服器,可以讓我們靈活的選擇到底該生成什麼型別的應用程式,常見專案型別如下:

  • jar包程式
  • war包程式

另外SpringBoot中還提供了一個可以執行專案的“spring script”的命令列工具,方便我們快速方便的啟動專案。

SpringBoot要點分析

  1. 特點

官網介紹:

Features:
- Create stand-alone Spring applications
- Embed Tomcat, Jetty or Undertow directly (no need to deploy WAR files)
- Provide opinionated 'starter' dependencies to simplify your build configuration
- Automatically configure Spring and 3rd party libraries whenever possible
- Provide production-ready features such as metrics, health checks, and externalized configuration
- Absolutely no code generation and no requirement for XML configuration

翻譯如下:

  • SpringBoot可以建立獨立的Spring應用程式;
  • SpringBoot中直接內嵌了Tomcat、Jetty或Undertow(無需部署WAR檔案)等web伺服器;
  • SpringBoot提供了“初始”的POM檔案內容,以簡化Maven配置;
  • SpringBoot可以儘可能自動地配置Spring;
  • SpringBoot可以提供生產就緒的功能,如指標,健康檢查和外部化配置等功能;
  • SpringBoot可以絕對無程式碼生成,也不需要XML配置

  1. 優點

根據上述特點,我們就可以提取出SpringBoot的主要優點了

  • 快速構建專案,縮短開發時間
  • 對主流開發框架的無配置整合;
  • 易於理解和開發Spring應用;
  • 專案可獨立執行,無需依賴外部的 Servlet 容器
  • 提供執行時的應用監控
  • 極大地提高了開發、部署效率;
  • 與雲端計算的天然整合

  1. 缺點
  • 版本迭代速度很快,一些模組改動很大;
  • 由於不用自己做配置,報錯時很難定位;
  • 網上現成的解決方案比較少。

我們學習一個技術,肯定要綜合考慮,只要這個技術能夠做到瑕不掩瑜,那就可以考慮使用。更何況SpringBoot的有點明顯大於缺點


  1. 關於”約定大於配置“(重點)

那什麼是約定大於配置呢?我們先來看看比較正式的定義:

約定大於配置(Convention Over Configuration),也稱作按約定程式設計,這是一種軟體設計正規化。目的在於減少軟體開發人員所需要做出的決定數量,從而獲得簡單靈活的好處,開發人員僅僅需要規定應用中不符合約定的部分。約定大於配置也被稱為習慣優於配置、約定優於配置等。

通俗的解釋:

其實所謂的約定大於配置,就是指我們在開發中,有些xml或yml檔案中的配置項,如果你沒有配置的話,程式就會採用一個預設值。換句話說,只要程式能採用預設值的配置,就不需要我們再手動配置了,而這個預設值就是約定!比如:

  • /src/main/java目錄用來存放java原始檔;
  • src/main/resources目錄用來存放資原始檔,如application.yml檔案,mybatis的*mapper.xml檔案;
  • /src/test/java目錄用來存放java測試檔案;
  • /src/test/resources目錄用來存放測試資原始檔;
  • /target目錄為專案的輸出位置。

我非得在/src/main/java中存放測試類不行嗎?

你非要這麼幹,不是說不能實現這個功能,而是這樣就打破了大家約定俗成的一種規則,也就是我們上面說的“約定”!就好比在國內,大家走路都走右邊,你非得特立獨行走左邊,行不行呢?當然也不是說不行,你走馬路左邊也能從北京走到上海,但是你在別人眼裡就是個另類,出了事就是你的責任,因為你沒有遵守大家都在遵循的一種”約定“!

對於我們人來說,能夠滿足大多數人的習慣的約定就是一種好的約定,而在程式中,能夠簡化程式碼的實現,使程式碼高可用的約定就是一種好的約定,所以一個好的約定可以減少很多配置。

SpringBoot中"約定大於配置"的思想,其實就是SpringBoot為我們的開發提供了一套已經配置好的預設值。這樣就不需要再像以前那樣去手動地編寫xml配置檔案了,只有預設配置項不能滿足我們的需求時,才需要去修改配置,也就是說採用預設的"約定"就足夠了,這就是所說的"約定"大於(優先於)我們自己的配置。

2.2 環境配置

基本說明:

  • 採用Spring Boot 2.x.x.RELEASE版本
  • 採用Java 8版本
  • 要求使用Spring Framework5.0.4.RELEASE或更高版本
  • 打包工具是Maven 3.2+ 或 Gradle 4+

Spring Boot本身也內嵌了一些Servlet容器,如下圖所示:


  1. 安裝配置JDK 8.0+

    檢視自己JDK版本:java -version

  2. 安裝配置Maven3.2+

檢查maven環境:mvn -V

  1. 選裝配置Gradle4.0+

    Spring Boot提供了一個有用的Gradle外掛,可以用來簡化依賴宣告和建立可執行的jar,我們可以參考如下Gradle依賴外掛配置:

    plugins {
     id 'org.springframework.boot' version '2.0.0.RELEASE'
     id 'java'
    }
    
    jar {
     baseName = 'firstProject'
     version =  '0.0.1-SNAPSHOT'
    }
    
    repositories {
     jcenter()
    }
    
    dependencies {
     compile("org.springframework.boot:spring-boot-starter-web")
     testCompile("org.springframework.boot:spring-boot-starter-test")
    }
    
    

2.3 SpringBoot專案建立方式

在Intellij ideal中建立SpringBoot專案的方式可以有如下3種:

  • 通過IDE的Spring Initializr來建立;
  • 手動建立一個Maven工程,然後引入SpringBoot所需的dependency來完成;
  • 通過Spring官網提供的模板來建立Spring boot專案,模板地址:https://start.spring.io/

這裡我們以第一種方式為例:

  1. 新建專案
  2. 選擇Spring Initializr
  3. 設定專案的包名及座標GAV資訊
  4. 設定啟動器及SpringBoot版本

注意:該方式預設是從spring.io官網上下載原始碼模板,然後自動匯入的idea中,所以對網速要求較高,有可能下載不成功!

  1. 設定專案模組名稱及儲存位置

  2. 專案包結構及pom檔案內容

  3. 新增web啟動器

    因為我們肯定是要建立一個web專案,所以需要有一個web依賴包,這裡就包含了之前SSM配置時代中很多的依賴包。

    大家可以直接把下面的依賴配置貼上到pom.xml檔案中。

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

注意:如果你忘了新增該web啟動器,會無法啟動web專案哦!

  1. 在專案入口處啟動專案

工程目錄結構

│  .gitignore
│  pom.xml
│
└─src
    ├─main
    │  ├─java
    │  │  └─com
    │  │      └─syc
    │  │          └─boot
    │  │              └─demo01
    │  │                          Demo01Application.java
    │  │
    │  └─resources
    │      │  application.properties
    └─test
        └─java
            └─com
                └─syc
                    └─boot
                        └─demo01
   │  │                                  Demo01ApplicationTests.java

各目錄檔案作用如下:

  • src/main/java下的程式入口:Demo01Application;
  • src/main/resources下的配置檔案:application.properties
  • src/test/下的測試入口:Demo01ApplicationTests.
  • .gitignore:Git 過濾配置檔案
  • pom.xml:Maven 的依賴管理配置檔案
  • Demo01Application.java:程式入口
  • resources:資原始檔目錄
    • static: 靜態資原始檔目錄
    • templates:模板資原始檔目錄
    • application.properties:Spring Boot 的配置檔案,實際開發中會替換成 YAML 語言配置(application.yml)

生成的Demo01Application和Demo01ApplicationTests類都可以直接執行來啟動當前建立的專案,如果專案中沒有新增任何資料訪問或Web模組的依賴包,程式會在載入完Spring之後結束執行。