Spring Boot 知識清單(一)SpringApplication
阿新 • • 發佈:2020-09-24
>愛生活,愛編碼,微信搜一搜【架構技術專欄】關注這個喜歡分享的地方。本文 架構技術專欄 已收錄,有各種JVM、多執行緒、原始碼視訊、資料以及技術文章等你來拿。
#### 一、概述
目前Spring Boot已經發展到2.3.4.RELEASE ,對於它的好處網上也是鋪天蓋地的,這裡就不再重複了。直接說重點,從Spring Boot1.x一步步跟著迭代升級到現在的2.3.4也是遇到了很多的坑,瞭解其新版本的特性是非常重要的,可以幫助我們避免很多不必要的麻煩。
因為我也一直在搞基於Spring Boot技術棧的元件開發工作,最近準備針對基礎元件進行部分重構,所以順便把當前版本的特性從頭在順一遍,就當是回顧總結了,這個回顧只介紹目前版本的一些特性,不對特性展開來敘述,如果有興趣可以@我,我也會根據某一塊來進行詳細的分析。喜歡的朋友可以跟著看一看,希望對你有所幫助。
## 二、從頭開始Application
首先我們先得來初始化各專案用於測試,大家可以使用官方的https://start.spring.io/ 生產,或者使用IDEA的外掛Spring Boot進行專案初始化,文末我也會放下我測試demo的地址。
#### 1、應用啟動失敗(Startup Failure)
如果應用啟動失敗,Spring Boot會幫我們把大概為什麼會啟動失敗的資訊列印在日誌中,如下面我用6080埠第二次啟動應用就會提示我如下
```java
***************************
APPLICATION FAILED TO START
***************************
Description:
Embedded servlet container failed to start. Port 6080 was already in use.
Action:
Identify and stop the process that's listening on port 8080 or configure this application to listen on another port.
```
有了這種友好的提示真是幸福感爆棚啊,而且Spring Boot 還給我們提供了更多的擴充套件介面FailureAnalyzer,並提供了響應得抽象類AbstractFailureAnalyzer。
如果我們不滿足他預設的啟動異常資訊,就可以通過FailureAnalyzer 來進行一些定製化開發(比如在異常發生的時候列印堆疊等)。
FailureAnalyzer的擴充套件使用了SPI的方式,所以在我們使用的時候需要在應用內建立META-INF/spring.factories,來宣告下我們的實現,下面上個小demo。
```java
/** 首先建立我們自己的類,並且可以根據自己的需要來進行異常攔截,這裡我攔截的就是端口占用異常PortInUseException
* @ClassName LearningFailureAnalyzer
* @Author QIANGLU
* @Date 2020/9/23 9:10 下午
* @Version 1.0
*/
public class LearningFailureAnalyzer extends AbstractFailure