日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

用了自定义Banner后,SpringBoot瞬间变的高大上了...

發布時間:2025/3/11 javascript 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用了自定义Banner后,SpringBoot瞬间变的高大上了... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Spring?Boot?在啟動的時候,我們或許想要把自己公司的?logo,或者是項目的?logo?放上去,我們可以試試本文的這些方法,可以讓你快速制作一些?Spring?Boot?項目啟動時的彩蛋,以提高項目的辨識度,或者是純碎為了給枯燥的生活平添一些樂趣,那么本文這些內容能很好的幫助到你。

本文知識點,如下圖所示:

Banner效果展示

Spring Boot?默認的?banner?圖展示效果如下:

我們可以把它變成這樣的:

或者是這樣的:

或者是這樣的:


簡直秀的飛起,不但能自定義內容,還能自定義顏色,那接下來我們就來看它是如何實現的吧。

自定義Banner

自定義?banner?的實現方式有兩種,一種是通過重寫自定義的 Banner?類來實現,另一種通過?txt?文件來實現。

1.重寫Banner類

首先,需要自定義類實現?Banner?接口,實現代碼如下:

import org.springframework.boot.Banner; import org.springframework.core.env.Environment;import java.io.PrintStream;public class MyBanner implements Banner {private static final String BANNER =" ___ ___ .__ .__ \n" +" / | \\ ____ | | | | ____ \n" +"/ ~ \\_/ __ \\| | | | / _ \\ \n" +"\\ Y /\\ ___/| |_| |_( <_> )\n" +" \\___|_ / \\___ >____/____/\\____/ \n" +" \\/ \\/ ";@Overridepublic void printBanner(Environment environment, Class<?> sourceClass, PrintStream out) {out.println(BANNER);out.println();} }

其中 BANNER?變量為自定義?banner?的內容,我這放入了一個 hello,然后在?Spring?Boot?啟動時設置?Banner?類為自定義類,實現代碼如下:

public static void main(String[] args) {SpringApplication springApplication = new SpringApplication(DemoApplication.class);// 設置自定義 BannerspringApplication.setBanner(new MyBanner());// 啟動 Spring BootspringApplication.run(args); }

最終的執行效果如下圖所示:

2.通過txt文件實現

我們可以在 Spring Boot 工程的 /src/main/resources 目錄下創建一個 banner.txt 文件,然后將 ASCII 字符畫復制進去,就能替換默認的 banner 了,如下圖所示:

之所以可以使用?banner.txt?文件的方式實現自定義?banner?是因為?Spring?Boot?框架在啟動時會按照以下順序,查找?banner?信息:

  • 先在 Classpath 下找 文件 banner.gif?或?banner.jpg 或?banner.png , 先找到誰就用誰;
  • 以上都沒有就在 Classpath 下找 banner.txt;
  • 如果都沒找到才會使用默認的 SpringBootBanner。

以上知識點是在?SpringApplicationBannerPrinter?源碼中得知的,核心源碼如下:

class SpringApplicationBannerPrinter {static final String BANNER_LOCATION_PROPERTY = "spring.banner.location";static final String BANNER_IMAGE_LOCATION_PROPERTY = "spring.banner.image.location";static final String DEFAULT_BANNER_LOCATION = "banner.txt";static final String[] IMAGE_EXTENSION = new String[]{"gif", "jpg", "png"};// 忽略非核心源碼private Banner getBanner(Environment environment) {SpringApplicationBannerPrinter.Banners banners = new SpringApplicationBannerPrinter.Banners();// 獲取圖片形式 bannerbanners.addIfNotNull(this.getImageBanner(environment));// 獲取文字形式 bannerbanners.addIfNotNull(this.getTextBanner(environment));if (banners.hasAtLeastOneBanner()) {return banners;} else {return this.fallbackBanner != null ? this.fallbackBanner : DEFAULT_BANNER;}}private Banner getTextBanner(Environment environment) {String location = environment.getProperty("spring.banner.location", "banner.txt");Resource resource = this.resourceLoader.getResource(location);return resource.exists() ? new ResourceBanner(resource) : null;}private Banner getImageBanner(Environment environment) {String location = environment.getProperty("spring.banner.image.location");if (StringUtils.hasLength(location)) {Resource resource = this.resourceLoader.getResource(location);return resource.exists() ? new ImageBanner(resource) : null;} else {String[] var3 = IMAGE_EXTENSION;int var4 = var3.length;for(int var5 = 0; var5 < var4; ++var5) {String ext = var3[var5];Resource resource = this.resourceLoader.getResource("banner." + ext);if (resource.exists()) {return new ImageBanner(resource);}}return null;}} }

所以我們才能使用?banner.txt?自定義?banner?信息,當然你也可以使用圖片的方式來自定義?banner。

小技巧:我們可以使用 banner.gif?來實現動態?banner?的效果,動手試試吧。

此種方式實現起來比較簡單,且是無代碼侵入式的,推薦使用這種方式。

Banner樣式控制

上面講了?banner?文字部分的修改,我們還可以修改?banner?的演示以及其他屬性,例如字體的樣式,粗體、斜體等,Spring?Boot?為提供了三個枚舉類來設定這些樣式,他們分別是:

  • AnsiColor:用來設定字符的前景色;
  • AnsiBackground:用來設定字符的背景色。
  • AnsiStyle:用來控制加粗、斜體、下劃線等等。

例如,我們可以使用?AnsiColor?來設置顏色,banner.txt?中的信息如下:

${AnsiColor.BRIGHT_RED} _ _ _ _ ${AnsiColor.BRIGHT_RED} | || | ___ | | | | ___ ${AnsiColor.BRIGHT_YELLOW} | __ | / -_) | | | | / _ \ ${AnsiColor.BRIGHT_YELLOW} |_||_| \___| _|_|_ _|_|_ \___/ ${AnsiColor.BRIGHT_RED}_|"""""|_|"""""|_|"""""|_|"""""|_|"""""| ${AnsiColor.BRIGHT_RED}"`-0-0-'"`-0-0-'"`-0-0-'"`-0-0-'"`-0-0-'

最終的展示效果如下圖所示:

Banner使用輸出變量

在?banner.txt?中我們還可以輸出一些全局變量,例如:

  • ${application.version}:用來獲取 MANIFEST.MF 文件中的版本號;
  • ${application.formatted-version}:格式化后的 ${application.version} 版本信息;
  • ${spring-boot.version}:Spring Boot 版本號;
  • ${spring-boot.formatted-version}:格式化后的 ${spring-boot.version} 版本信息。

使用示例如下:

/ˉˉˉˉ\ o-|[][]|-o |_--_| /ˉˉˉˉˉˉˉˉˉˉ\ ||| ?? ||| ||| ||| (o)| |(o) | || | |__||__| |__||__|Spring Boot 版本:${spring-boot.version}

Banner圖在線生成

在線生成?banner?的地址:

  • https://www.bootschool.net/ascii
  • http://www.network-science.de/ascii/
  • http://patorjk.com/software/taag/
  • http://www.degraeve.com/img2txt.php

推薦使用第一種,使用縮略圖如下:

隱藏Banner

如果我們需要隱藏 banner?信息,可以通過以下三種方法實現。

1.通過代碼關閉Banner

我們可以在?Spring?Boot 啟動(run)之前設置隱藏 banner,實現代碼如下:

public class DemoApplication {public static void main(String[] args) {SpringApplication springApplication = new SpringApplication(DemoApplication.class);// 隱藏 bannerspringApplication.setBannerMode(Banner.Mode.OFF);// 啟動 Spring BootspringApplication.run(args);} }

2.通過配置文件隱藏Banner

在?Spring?Boot?的配置文件 application.properties?通過設置如下配置來隱藏?banner?的顯示,配置如下:

spring.main.banner-mode=off

3.在Idea中隱藏Banner

我們可以在?Idea?的調試配置中隱藏?banner,如下圖所示:

附:彩蛋

文章的末尾,附一個七彩佛祖的 banner?內容:

${AnsiColor.BRIGHT_GREEN}$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ${AnsiColor.BRIGHT_YELLOW}$$ _.ooOoo._ $$ ${AnsiColor.BRIGHT_RED}$$ o888888888o $$ ${AnsiColor.BRIGHT_CYAN}$$ 88" . "88 $$ ${AnsiColor.BRIGHT_MAGENTA}$$ (| ^_^ |) $$ ${AnsiColor.BRIGHT_GREEN}$$ O\ = /O $$ ${AnsiColor.BRIGHT_RED}$$ ____/`-----'\____ $$ ${AnsiColor.BRIGHT_CYAN}$$ .' \\| |$$ `. $$ ${AnsiColor.BRIGHT_MAGENTA}$$ / \\||| : |||$$ \ $$ ${AnsiColor.BRIGHT_GREEN}$$ / _||||| -:- |||||- \ $$ ${AnsiColor.BRIGHT_YELLOW}$$ | | \\\ - $$/ | | $$ ${AnsiColor.BRIGHT_GREEN}$$ | \_| ''\-----/'' | | $$ ${AnsiColor.BRIGHT_YELLOW}$$ \ .-\___ `-` ____/-. / $$ ${AnsiColor.BRIGHT_CYAN}$$ ___`. .' /--.--\ `. . ___ $$ ${AnsiColor.BRIGHT_RED}$$ ."" '< `.____\_<|>_/____.' >'"". $$ ${AnsiColor.BRIGHT_GREEN}$$ | | : `- \`.;`.\ _ /``;.`/ - ` : | | $$ ${AnsiColor.BRIGHT_YELLOW}$$ \ \ `-. \_ ___\ /___ _/ .-` / / $$ ${AnsiColor.BRIGHT_CYAN}$$ ========`-.____`-.____\_____/____.-`____.-'======== $$ ${AnsiColor.BRIGHT_MAGENTA}$$ `=---=' $$ ${AnsiColor.BRIGHT_YELLOW}$$ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ $$ ${AnsiColor.BRIGHT_GREEN}$$ 佛祖保佑 永無BUG 永不修改 $$ ${AnsiColor.BRIGHT_YELLOW}$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ${AnsiColor.BRIGHT_YELLOW}

實現效果如下圖所示:

總結

本文我們講了自定義?banner?的兩種方法,自定義?banner?類和?banner.txt?的方式,其中以源碼分析的方式講了為什么可以通過 banner.txt?自定義?banner信息。我們還講了?banner?樣式控制(顏色、字體樣式等)和全局變量輸出的方法,以及?banner?圖在線生成的幾個地址,最后還講了 3?種隱藏?banner?的方法。

最后的話

認真寫好每一篇原創,只為不辜負你的觀看。寫作是一件很酷并且能幫助他人的事,我希望能一直堅持下去。如果覺得有用,請隨手給我一個贊吧,他將鼓勵我產出更好的文章。

參考 &?鳴謝

https://www.jianshu.com/p/c1f7617c99aa

https://www.jianshu.com/p/9a2c20e3766d

更多精彩內容,請關注微信公眾號「Java中文社群」

總結

以上是生活随笔為你收集整理的用了自定义Banner后,SpringBoot瞬间变的高大上了...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。