背景
初次運行springboot的小伙伴想必對于springboot打印的banner很感興趣
spring boot在啟動項目時,控制臺會打印一個spring的logo。如果不做任何配置
該信息來源于springbootbanner類的靜態(tài)常量banner,該屬性是一個字符串數(shù)組,不指定任何banner屬性時,控制臺默認輸出該數(shù)組數(shù)據(jù)。我們可以通過spring boot提供的強大配置功能來改變banner的輸出。
通常長成這樣
一個spring撲面而來~
那么我們能否定制自己的啟動頁呢?
源碼
springboot在啟動時會調(diào)用如下一段代碼
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
private banner printbanner(configurableenvironment environment) { if ( this .bannermode == banner.mode.off) { return null ; } resourceloader resourceloader = this .resourceloader != null ? this .resourceloader : new defaultresourceloader(getclassloader()); springapplicationbannerprinter bannerprinter = new springapplicationbannerprinter( resourceloader, this .banner); if ( this .bannermode == mode.log) { return bannerprinter.print(environment, this .mainapplicationclass, logger); } return bannerprinter.print(environment, this .mainapplicationclass, system.out); } public banner print(environment environment, class <?> sourceclass, printstream out) { banner banner = getbanner(environment, this .fallbackbanner); banner.printbanner(environment, sourceclass, out); return new printedbanner(banner, sourceclass); } private banner getbanner(environment environment, banner definedbanner) { banners banners = new banners(); banners.addifnotnull(getimagebanner(environment)); banners.addifnotnull(gettextbanner(environment)); if (banners.hasatleastonebanner()) { return banners; } if ( this .fallbackbanner != null ) { return this .fallbackbanner; } return default_banner; } private static final banner default_banner = new springbootbanner(); |
而 springbootbanner長成這樣
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
/** * default banner implementation which writes the 'spring' banner. * * @author phillip webb */ class springbootbanner implements banner { private static final string[] banner = { "" , " . ____ _ __ _ _" , " /\\\\ / ___'_ __ _ _(_)_ __ __ _ \\ \\ \\ \\" , "( ( )\\___ | '_ | '_| | '_ \\/ _` | \\ \\ \\ \\" , " \\\\/ ___)| |_)| | | | | || (_| | ) ) ) )" , " ' |____| .__|_| |_|_| |_\\__, | / / / /" , " =========|_|==============|___/=/_/_/_/" }; private static final string spring_boot = " :: spring boot :: " ; private static final int strap_line_size = 42 ; @override public void printbanner(environment environment, class <?> sourceclass, printstream printstream) { for (string line : banner) { printstream.println(line); } string version = springbootversion.getversion(); version = (version == null ? "" : " (v" + version + ")" ); string padding = "" ; while (padding.length() < strap_line_size - (version.length() + spring_boot.length())) { padding += " " ; } printstream.println(ansioutput.tostring(ansicolor.green, spring_boot, ansicolor. default , padding, ansistyle.faint, version)); printstream.println(); } } |
上述代碼可以看到banner存在兩種 imagebanner和textbanner
imagebanner需要配置屬性為banner.image.location
或者支持名為banner格式為 "gif", "jpg", "png的圖片
textbanner支持默認情況下在banner.location 或者默認為banner.txt
比如我們可以如下設置
在resource分別放置banner.txt和banner.png
banner.png
banner.txt
/$$$$$$$$ /$$$$$$
| $$_____//$$__ $$
| $$ | $$ \__/
| $$$$$ | $$$$$$$
| $$__/ | $$__ $$
| $$ | $$ \ $$
| $$ | $$$$$$/
|__/ \______/
我們可以看一下結(jié)果
哈哈 f6小人變成了這樣!!!
關閉banner顯示
在程序中可以使用app.setbannermode(mode.off);來關閉banner,利用屬性值設置則為:spring.main.banner-mode=off
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。
原文鏈接:https://my.oschina.net/qixiaobo025/blog/1573647