SpringBoot自定義Banner使用詳解
1. 什么是 Banner
啟動(dòng) Spring Boot 時(shí),幾乎總是能在控制臺(tái)上方看到如下橫幅,這個(gè)也叫字符畫(huà)、英文ASCII藝術(shù)字

2. 如何修改 Banner
默認(rèn)情況下,只需在 resources 根目錄(準(zhǔn)確說(shuō)是 classpath)下新建一個(gè) banner.txt 文件,內(nèi)容即為 Banner

在 banner.txt 文件中,可以使用可用的任何鍵 Environment 以及以下任何占位符
| Variable | Description |
| ${application.version} | 應(yīng)用程序的版本號(hào),例如1.0 |
| ${application.formatted-version} | 用括號(hào)括起來(lái)并以 v 為前綴,例如(v1.0) |
| ${spring-boot.version} | 正在使用的 Spring Boot 版本。例如3.0.5 |
| ${spring-boot.formatted-version} | 同理,(v3.0.5) |
3. IDEA 中演示
banner.txt 內(nèi)容如下,使用一個(gè)經(jīng)典的佛祖保佑 Banner,并演示占位符的使用
${spring-boot.formatted-version}
————————————————————————————————————————————————————————————————————
// _ooOoo_ //
// o8888888o //
// 88" . "88 //
// (| ^_^ |) //
// O\ = /O //
// ____/`---'\____ //
// .' \\| |// `. //
// / \\||| : |||// \ //
// / _||||| -:- |||||- \ //
// | | \\\ - /// | | //
// | \_| ''\---/'' | | //
// \ .-\__ `-` ___/-. / //
// ___`. .' /--.--\ `. . ___ //
// ."" '< `.___\_<|>_/___.' >'"". //
// | | : `- \`.;`\ _ /`;.`/ - ` : | | //
// \ \ `-. \_ __\ /__ _/ .-` / / //
// ========`-.____`-.___\_____/___.-`____.-'======== //
// `=---=' //
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ //
// 佛祖保佑 永不宕機(jī) 永無(wú)BUG //
————————————————————————————————————————————————————————————————————運(yùn)行如下,符合預(yù)期

4. 快速生成 Banner
對(duì)于復(fù)雜的 Banner(譬如上面的佛祖),手打顯然是很浪費(fèi)時(shí)間精力的,通常會(huì)借助一些 Banner 生成工具快速生成
推薦一個(gè) Banner 在線生成工具
可以將輸入的文本轉(zhuǎn)換為 Banner,并且有多種字體可選
5. 指定 banner.txt 的位置
上面提到默認(rèn)情況下,banner.txt 必須放在 classpath(resources 根目錄 )下方可生效,假設(shè)現(xiàn)在需要放在 resources/static 目錄下,在 application.yml 添加如下配置項(xiàng)即可
spring:
banner:
# 或者 static/banner.txt
location: classpath:static/banner.txt
需要說(shuō)明的是,在沒(méi)有顯式設(shè)置上述配置項(xiàng)時(shí),Banner 文件只能為 banner.txt;顯式設(shè)置后,Banner 文件名就可以為 xxx.txt
6. 在 Spring Boot 2 中的說(shuō)明
6.1 圖片生成 Banner
在 3.0.x 的版本中,Banner 僅能通過(guò)文本文件(banner.txt)的方式設(shè)置,但在 2 的版本中,除了文本文件,還可以通過(guò)圖片的方式設(shè)置,查看 spring.banner 下的配置項(xiàng)就可以發(fā)現(xiàn)

通過(guò)配置項(xiàng) spring.banner.image.location 的默認(rèn)值可以看出,只需在 classpath 下放入一個(gè) banner.gif 圖片即可,經(jīng)過(guò)測(cè)試,除了 gif 格式的圖片,jpg、jpg 也能被識(shí)別,實(shí)際效果就是將圖片轉(zhuǎn)換為字符畫(huà)
以下圖為例(盒馬.jpg)

spring:
banner:
image:
location: static/盒馬.jpg
width: 38
由于默認(rèn)寬度(76)下在控制臺(tái)中生成的Banner過(guò)大,不便截圖,故此處指定了 width 屬性
生成效果:

可以看出,生成的 Banner 和原圖十分相似,甚至連顏色都還原了(用了某種算法)
6.2 增強(qiáng)顯示效果
還可以進(jìn)一步增強(qiáng)顯示效果,通過(guò)設(shè)置 spring.banner.image.pixelmode,將渲染圖像時(shí)使用的像素模式由默認(rèn)的 text 模式改為 block 模式
spring:
banner:
image:
location: static/盒馬.jpg
width: 38
pixelmode: block
生成效果:

6.3 更多配置項(xiàng)
至于 spring.banner.image 的其他屬性不再逐一演示,因?yàn)槭趾?jiǎn)單,參照文檔一試便知,附上

遺憾的是,在 Spring Boot 3 中有關(guān) spring.banner.image.* 的配置項(xiàng)均已棄用,該功能已被剔除,僅支持文本文件的方式生成 Banner

7. 補(bǔ)充
在 2 版本中,可以同時(shí)指定文本文件和圖片生成 Banner。
若同時(shí)指定,控制臺(tái) Banner 打印順序?yàn)椋何谋疚募?、圖片
到此這篇關(guān)于SpringBoot自定義Banner使用詳解的文章就介紹到這了,更多相關(guān)SpringBoot自定義Banner內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 詳解SpringBoot基礎(chǔ)之banner玩法解析
- 超個(gè)性修改SpringBoot項(xiàng)目的啟動(dòng)banner的方法
- Springboot居然可以設(shè)置動(dòng)態(tài)的Banner(推薦)
- 教你怎么用Springboot自定義Banner圖案
- SpringBoot之自定義Banner詳解
- SpringBoot詳解Banner的使用
- SpringBoot中的自定義Banner詳細(xì)解析
- SpringBoot的自定義banner使用方法
- SpringBoot之自定義banner使用代碼實(shí)例
- SpringBoot打印Banner的實(shí)現(xiàn)示例
相關(guān)文章
mybatis報(bào)錯(cuò)?resultMapException的解決
這篇文章主要介紹了mybatis報(bào)錯(cuò)?resultMapException的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-01-01
淺談Java中Unicode的編碼和實(shí)現(xiàn)
這篇文章向大家介紹了Java編程中Unicode編碼及實(shí)現(xiàn)的相關(guān)內(nèi)容,列舉了幾個(gè)字符不同表達(dá)式的比較,以及Unicode平面映射的知識(shí),具有一點(diǎn)點(diǎn)參考價(jià)值,需要的朋友可以了解下。2017-10-10
Java使用lambda表達(dá)式簡(jiǎn)化代碼的示例詳解
這篇文章主要給大家介紹了Java如何使用lambda表達(dá)式簡(jiǎn)化代碼的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-11-11
springboot druid mybatis多數(shù)據(jù)源配置方式
這篇文章主要介紹了springboot druid mybatis多數(shù)據(jù)源配置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12
Java實(shí)現(xiàn)讀取項(xiàng)目中文件(.json或.properties)的方法詳解
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)讀取項(xiàng)目中文件的方法,例如.json或.properties,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2023-04-04
java微信小程序步數(shù)encryptedData和開(kāi)放數(shù)據(jù)解密的實(shí)現(xiàn)
這篇文章主要介紹了java微信小程序步數(shù)encryptedData和開(kāi)放數(shù)據(jù)解密的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09

