Spring Boot 2.0 提供了很多新特性,其中就有一個小彩蛋:動態 Banner,今天我們就先拿這個來嚐嚐鮮。
配置依賴
使用 Spring Boot 2.0 首先需要將專案依賴包替換為剛剛釋出的 2.0 RELEASE,現在網站https://start.spring.io/
也將 Spring Boot 2.0 設定為預設版本。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.0.RELEASE</version>
</parent>
設定完畢後,dependencies
中沒有指明版本的依賴包,將自動使用2.0.0.RELEASE依賴的版本。
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
</dependencies>
Spring Boot 2.0 剛剛釋出,一些 Maven 倉庫還沒更新,如果匯入專案後依賴包不能下載,可以手動新增 Spring Boot 官方 Maven 倉庫。
<repositories>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/libs-milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
大家做好心理準備,第一次使用 Spring Boot 2.0 ,完整依賴包需要下載半小時左右。
Spring Boot 更換 Banner
我們先來回顧一下在 Spring Boot 1.0 中如何更換啟動 Banner,其實都很簡單,只需要在src/main/resources
路徑下新建一個banner.txt
檔案,banner.txt
中填寫好需要列印的字串內容即可。
一般情況下,我們會藉助第三方工具幫忙轉化內容,如網站http://www.network-science.de/ascii/
將文字轉化成字串,網站:http://www.degraeve.com/img2txt.php
可以將圖片轉化成字串。
我們以Hello World為啟動字串來進行測試:
.__ .__ .__ .__ .___
| |__ ____ | | | | ____ __ _ _____________| | __| _/
| | \_/ __ \| | | | / _ \ \ \/ \/ / _ \_ __ \ | / __ |
| Y \ ___/| |_| |_( <_> ) \ ( <_> ) | \/ |__/ /_/ |
|___| /\___ >____/____/\____/ \/\_/ \____/|__| |____/\____ |
\/ \/ \/
在 Spring Boot 2.0 專案src/main/resources
路徑下新建一個banner.txt
檔案,貼上上述字串,啟動 Spring Boot 專案觀察啟動日誌,發現 Spring Boot 2.0 已經將預設的 Spring 字串替換為 hello world。說明 Spring Boot 2.0 也支援1.0更換 Banner 的方法。
接下來在 Spring Boot 2.0 專案中測試列印動態 Banner ,使用的gif如下:
同樣我們將 banner.gif 檔案放到專案的src/main/resources
路徑下,啟動專案進行測試,輸出欄列印資訊如下:
..
.::*
...
..... ....
........ . ...
........ . ..
...... ....
.... ...
. .
..**::**..
.*::::::::::*.
.*::::::::::::*.
.*::::::::::::*.
.*::::::::::::*.
.*::::::::::*.
..**::***.
..
..... ..
..... ...
...... ......
. ... . .....
. .... . .
............................ .............
.................. ......... ................ .
................... ... . ... ............
............. . ... ...............
. ......... ...........
.......... ....... ....
............ ........
........ ........
.... . .........
........ ........
......... ..********.. ......*..
........ .**::::::::::::**. ........
........... .**::::::::::::::::**. .......
...... .*::::::::::::::::::::*. .......
... .. .*::::::::::::::::::::::*. .......
...... .::::::::::::::::::::::::. .......
.......... .::::::::::::::::::::::::. ... ....
......... .*:::::::::::::::::::::::. ....
......... .*::::::::::::::::::::::*. ...
......... .*::::::::::::::::::::*. ....
........ .**::::::::::::::::**. .........
... .... .**::::::::::::**. .........
. ........ .********.. .........
....... . ......*..
......... . .....
....... .........
........ . ............
............ .. ...........
. ............. .........
................ .... ..........
............. .... . ......... . ..... .
.... ...... ......... . .. .... .............. ....
.. ............. ........... ..............
::. .*:*
:. *:* *. .*:*
.:*. *: .*:*. :. .:
:* : :. .::::* :
: : * *****..... *.: :
: : .:* .::::::::::**.. .. : *
: *: .*:::::::::::::::*. * **
o *** ...**::::::::::::::::::**. * :.:
: .* : .....***::::::::::::::::::::::*. : : o
:*. * ..*****:::::::::::::::::::::::::*. * : o
: . .*::::::::::::::::::::::::::::::::*. :: *
:* : *::::::::::::::::::::::::::::::::::* : o
* o * .*::::::::::::::::::::::::::::::::::*. .:o :
: : : .*::::::::::::::::::::::::::::::::::*. : . :
: .. .*::::::::::::::::::::::::::::::::::*. * : *
: : .*::::::::::::::::::::::::::::::::::* : *:
. :* .*o:::::::::::::::::::::::::::::::*. . :
: : * .*::::::::::::::::::::::::::::::*. * :*
o * : .*::::::::::::::::::::::::::::*. : ** :
:* * .*::::::::::::::::::::::::**. *.. *
** * ..*::::::::::::::::::::*.. :* *
* o .. ..**::::::::::::**.. .:. : :
: o.: ...******... *. : :.
: ::o:. *: * *:
:. : .*:*. :* .*::
.:* .* *o: .:
.:*. .*:
...
通過上述輸出我們發現 Spring Boot 在啟動的時候,會將 gif 圖片的每一個畫面,按照順序列印在日誌中,所有的畫面列印完畢後,才會啟動 Spring Boot 專案。
如果目錄src/main/resources
下同時存在banner.txt
和banner.gif
,專案會先將banner.gif
每一個畫面列印完畢之後,再列印banner.txt
中的內容。
專案的啟動 Banner 有什麼用呢,在一些大的組織或者公司中,可以利用這個特性定製自己專屬的啟動畫面,增加團隊對品牌的認同感。