1. 程式人生 > >Spring Boot 啟動Banner設定--啟動彩蛋

Spring Boot 啟動Banner設定--啟動彩蛋

Spring Boot啟動時會顯示如下圖示:

.   ____          _            __ _ _
/\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/  ___)| |_)| | | | | || (_| |  ) ) ) )
'  |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot ::        (v1.3.3.RELEASE)

如果有人不喜歡這個輸出,本文說一下怎麼修改。

1. 第一種方式:修改的時候,進行設定,在Application的main方法中:

SpringApplication application = new SpringApplication(App.class);
/*
* Banner.Mode.OFF:關閉;
* Banner.Mode.CONSOLE:控制檯輸出,預設方式;
* Banner.Mode.LOG:日誌輸出方式;
/
application.setBannerMode(Banner.Mode.
OFF*);
application.run(args);

2. 第二種方式:修改banner.txt配置檔案

在src/main/resouces下新建banner.txt,在檔案中加入:

#這個是MANIFEST.MF檔案中的版本號 
${application.version}              
 
#這個是上面的的版本號前面加v後上括號 
${application.formatted-version}
 
#這個是springboot的版本號 
${spring-boot.version}             
 
#這個是springboot的版本號 
${spring-boot.formatted-version}

 
resource目錄下面放入一個banner.txt檔案,Spring Boot啟動專案的時候就會優先啟動這個檔案中的內容。注意,不止在war包或者Fat Jar的resource目錄放置會起效果,在任一外掛的resource目錄放置也可以生效。當然這裡涉及到一個優先順序的問題,在war包或Fat Jar中放置的優先順序高於外掛jar包的。

3. 第三種方式:重寫介面Banner實現

SpringBoot提供了一個介面org.springframework.boot.Banner,他的例項可以被傳給SpringApplication的setBanner(banner)方法。如果你閒得不行非要著重美化這個命令列輸出的話,可以重寫Banner介面的printBanner方法。

4. 第四種方式:在application.properties進行配置

在application.proerpties進行banner的顯示和關閉:

### 是否顯示banner,可選值[true|false]
spring.main.show-banner=false

使用Spring Boot啟動的jar包總是會顯示一個Spring的圖示:

.   ____          _            __ _ _
/\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/  ___)| |_)| | | | | || (_| |  ) ) ) )
'  |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot ::        (v1.3.3.RELEASE)

實際上Spring Boot在這個位置,放了一個彩蛋,我們是可以自定義這個圖示的。
我們可以在resource目錄下面放入一個banner.txt
檔案,Spring Boot啟動專案的時候就會優先啟動這個檔案中的內容。
這裡給大家推薦兩個個字元畫生成的網站,我們可以利用生成的字串放入這個banner.txt
檔案:

“Spring”的這個字型使用的是線上生成工具中的“standard”型別的字型,字型可以在工具中選擇對比一下

比如我生成一個star wars的圖示:

     _______.___________.    ___      .______         
    /       |           |   /   \     |   _  \        
   |   (----`---|  |----`  /  ^  \    |  |_)  |       
    \   \       |  |      /  /_\  \   |      /        
.----)   |      |  |     /  _____  \  |  |\  \----.   
|_______/       |__|    /__/     \__\ | _| `._____|   
                                                      
____    __    ____  ___      .______          _______.
\   \  /  \  /   / /   \     |   _  \        /       |
 \   \/    \/   / /  ^  \    |  |_)  |      |   (----`
  \            / /  /_\  \   |      /        \   \    
   \    /\    / /  _____  \  |  |\  \----.----)   |   
    \__/  \__/ /__/     \__\ | _| `._____|_______/    

這樣啟動的時候


但是僅僅是這樣看起來並不好看,還不如原來的圖示好看呢。實際上Spring Boot為這個彩蛋提供了不少美化功能。
Spring Boot提供了一個列舉類AnsiColor
,這個類可以控制banner.txt中的字元顏色,而且非常容易使用。
比如我可以將字元設定成顏色:BRIGHT_YELLOW

${AnsiColor.BRIGHT_YELLOW}
     _______.___________.    ___      .______         
    /       |           |   /   \     |   _  \        
   |   (----`---|  |----`  /  ^  \    |  |_)  |       
    \   \       |  |      /  /_\  \   |      /        
.----)   |      |  |     /  _____  \  |  |\  \----.   
|_______/       |__|    /__/     \__\ | _| `._____|   
                                                      
____    __    ____  ___      .______          _______.
\   \  /  \  /   / /   \     |   _  \        /       |
 \   \/    \/   / /  ^  \    |  |_)  |      |   (----`
  \            / /  /_\  \   |      /        \   \    
   \    /\    / /  _____  \  |  |\  \----.----)   |   
    \__/  \__/ /__/     \__\ | _| `._____|_______/    

再重新啟動專案,啟動介面就會變成這個樣子:

類似 ${AnsiColor.BRIGHT_YELLOW} 這種表示式,其實可以放置多個,啟動介面上的顏色,總是會根據AnsiColor 的設定改變介面的顏色,這樣啟動的介面就會顯示多種不同的顏色了。

除了這樣美化的功能之外,啟動介面很重要的功能就是要告訴我們這個專案的一些重要資訊。

`${application.version}` 這個是`MANIFEST.MF`檔案中的版本號 
`${application.formatted-version}` 這個是上面的的版本號前面加v後上括號
` ${spring-boot.version}` 這個是springboot的版本號 
`${spring-boot.formatted-version}`同上

把以上資訊通過${} 放入banner.txt中,就會打印出專案對應的資訊。
這裡放一個完整的demo:

${AnsiColor.BRIGHT_YELLOW}
     _______.___________.    ___      .______         ____    __    ____  ___      .______          _______.
    /       |           |   /   \     |   _  \        \   \  /  \  /   / /   \     |   _  \        /       |
   |   (----`---|  |----`  /  ^  \    |  |_)  |        \   \/    \/   / /  ^  \    |  |_)  |      |   (----`
    \   \       |  |      /  /_\  \   |      /          \            / /  /_\  \   |      /        \   \
.----)   |      |  |     /  _____  \  |  |\  \----.      \    /\    / /  _____  \  |  |\  \----.----)   |
|_______/       |__|    /__/     \__\ | _| `._____|       \__/  \__/ /__/     \__\ | _| `._____|_______/

${AnsiColor.BRIGHT_BLUE}
::: Project (version:${application.version}) :::             \(^O^)/    Spring-Boot ${spring-boot.version}

啟動就會是這一個樣子:

如果顏色沒有變,那麼還需要設定:spring.output.ansi.enabled=ALWAYS

在2016年的最後一天,借用Spring Boot的Banner向各位程式猿同仁們問候一聲:Happy New Year

接下來我們就來介紹一下這個輕鬆愉快的自定義banner功能。實現的方式非常簡單,我們只需要在Spring Boot工程的/src/main/resources 目錄下建立一個banner.txt 檔案,然後將ASCII字元畫複製進去,就能替換預設的banner了。
比如上圖中的輸出,就採用了下面的banner.txt 內容:

${AnsiColor.BRIGHT_GREEN}
##     ##    ###    ########  ########  ##    ##    ##    ## ######## ##      ##    ##    ## ########    ###    ########
##     ##   ## ##   ##     ## ##     ##  ##  ##     ###   ## ##       ##  ##  ##     ##  ##  ##         ## ##   ##     ##
##     ##  ##   ##  ##     ## ##     ##   ####      ####  ## ##       ##  ##  ##      ####   ##        ##   ##  ##     ##
######### ##     ## ########  ########     ##       ## ## ## ######   ##  ##  ##       ##    ######   ##     ## ########
##     ## ######### ##        ##           ##       ##  #### ##       ##  ##  ##       ##    ##       ######### ##   ##
##     ## ##     ## ##        ##           ##       ##   ### ##       ##  ##  ##       ##    ##       ##     ## ##    ##
##     ## ##     ## ##        ##           ##       ##    ## ########  ###  ###        ##    ######## ##     ## ##     ##
${AnsiColor.BRIGHT_RED}
Application Version: ${application.version}${application.formatted-version}
Spring Boot Version: ${spring-boot.version}${spring-boot.formatted-version}

從上面的內容中可以看到,還使用了一些屬性設定:

`${AnsiColor.BRIGHT_RED}` :設定控制檯中輸出內容的顏色
`${application.version}` :用來獲取`MANIFEST.MF` 檔案中的版本號
`${application.formatted-version}` :格式化後的`${application.version}` 版本資訊
`${spring-boot.version}` :Spring Boot的版本號
`${spring-boot.formatted-version}` :格式化後的`${spring-boot.version}` 版本資訊

生成工具

如果讓我們手工的來編輯這些字元畫,顯然是一件非常困難的差事。所以,我們可以藉助下面這些工具,輕鬆地根據文字或圖片來生成用於Banner輸出的字元畫。

年終彩蛋

最後,奉上程式猿必備Banner “永不宕機佛祖”,祝大家:“新年快樂、永不宕機、永無Bug”!

${AnsiColor.BRIGHT_YELLOW}
////////////////////////////////////////////////////////////////////
// _ooOoo_ //
// o8888888o //
// 88" . "88 //
// (| ^_^ |) //
// O\ = /O //
// ____/`---'\____ //
// .' \\| |// `. //
// / \\||| : |||// \ //
// / _||||| -:- |||||- \ //
// | | \\\ - /// | | //
// | \_| ''\---/'' | | //
// \ .-\__ `-` ___/-. / //
// ___`. .' /--.--\ `. . ___ //
// ."" '< `.___\_<|>_/___.' >'"". //
// | | : `- \`.;`\ _ /`;.`/ - ` : | | //
// \ \ `-. \_ __\ /__ _/ .-` / / //
// ========`-.____`-.___\_____/___.-`____.-'======== //
// `=---=' //
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ //
// 佛祖保佑 永不宕機 永無BUG //
////////////////////////////////////////////////////////////////////

效果圖:



作者:蟬鳴的雨
連結:https://www.jianshu.com/p/bfbcabc4af1d
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯絡作者獲得授權並註明出處。