2 SpringBoot介紹
2 SpringBoot介紹
文件地址:SpringBoot2.x系列教程新紀元之SpringBoot初相見
2.1 概述
SpringBoot誕生背景
現在一些動態語言慢慢的開始流行(Ruby、Groovy、Scala、Node.js)起來了,這時候就越發的顯得傳統的Spring開發方式看起來顯得格外的笨重,顯得Spring的開發缺點很多:
- 配置繁多而雜亂;
- 開發效率低下而重複;
- 專案部署複雜而困難;
- 整合第三方庫難度大......
在這樣一個時代背景下,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要點分析
- 特點
官網介紹:
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配置
- 優點
根據上述特點,我們就可以提取出SpringBoot的主要優點了
- 快速構建專案,縮短開發時間
- 對主流開發框架的無配置整合;
- 易於理解和開發Spring應用;
- 專案可獨立執行,無需依賴外部的 Servlet 容器
- 提供執行時的應用監控
- 極大地提高了開發、部署效率;
- 與雲端計算的天然整合
- 缺點
- 版本迭代速度很快,一些模組改動很大;
- 由於不用自己做配置,報錯時很難定位;
- 網上現成的解決方案比較少。
我們學習一個技術,肯定要綜合考慮,只要這個技術能夠做到瑕不掩瑜,那就可以考慮使用。更何況SpringBoot的有點明顯大於缺點
- 關於”約定大於配置“(重點)
那什麼是約定大於配置呢?我們先來看看比較正式的定義:
約定大於配置(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容器,如下圖所示:
-
安裝配置JDK 8.0+
檢視自己JDK版本:
java -version
-
安裝配置Maven3.2+
檢查maven環境:mvn -V
-
選裝配置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/
這裡我們以第一種方式為例:
- 新建專案
- 選擇Spring Initializr
- 設定專案的包名及座標GAV資訊
- 設定啟動器及SpringBoot版本
注意:該方式預設是從spring.io官網上下載原始碼模板,然後自動匯入的idea中,所以對網速要求較高,有可能下載不成功!
-
設定專案模組名稱及儲存位置
-
專案包結構及pom檔案內容
-
新增web啟動器
因為我們肯定是要建立一個web專案,所以需要有一個web依賴包,這裡就包含了之前SSM配置時代中很多的依賴包。
大家可以直接把下面的依賴配置貼上到pom.xml檔案中。
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
注意:如果你忘了新增該web啟動器,會無法啟動web專案哦!
- 在專案入口處啟動專案
工程目錄結構
│ .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之後結束執行。