一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - 詳解SpringBoot基礎之banner玩法解析

詳解SpringBoot基礎之banner玩法解析

2021-07-29 11:57二師兄 Java教程

SpringBoot項目啟動時會在控制臺打印一個默認的啟動圖案,這個圖案就是我們要講的banner,這篇文章主要介紹了SpringBoot基礎之banner玩法解析,感興趣的小伙伴們可以參考一下

springboot項目啟動時會在控制臺打印一個默認的啟動圖案,這個圖案就是我們要講的banner。看似簡單的banner,我們能夠對它做些什么呢?本篇文章就帶大家深入了解一下banner的使用(版本:springboot2.1.4)。

詳解SpringBoot基礎之banner玩法解析

制作自己的banner

第一步:在src/main/resources下面創建banner.txt。

第二步:訪問網站 http://patorjk.com/software/taag,在網站“type something ”處輸入想要制作的單詞(比如:hello world),會生成對應的字符。也可以通過其他參數來調整字符的樣式。

詳解SpringBoot基礎之banner玩法解析

復制生成的字符,粘貼到banner.txt,再次啟動程序便可以打印出指定的banner了。

個人比較喜歡的banner是如下圖形:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
${ansicolor.bright_yellow}
////////////////////////////////////////////////////////////////////
//             _ooooo_                //
//             o8888888o               //
//             88" . "88               //
//             (| ^_^ |)               //
//             o\ = /o               //
//           ____/`---'\____              //
//          .' \\|   |// `.             //
//          / \\||| : |||// \            //
//         / _||||| -:- |||||- \            //
//         |  | \\\ - /// |  |            //
//         | \_| ''\---/'' |  |            //
//         \ .-\__ `-` ___/-. /            //
//        ___`. .' /--.--\ `. . ___           //
//       ."" '< `.___\_<|>_/___.' >'"".         //
//      | | : `- \`.;`\ _ /`;.`/ - ` : | |         //
//      \ \ `-.  \_ __\ /__ _/  .-` / /         //
//   ========`-.____`-.___\_____/___.-`____.-'========     //
//              `=---='               //
//   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^    //
//      佛祖保佑    永不宕機   永無bug         //
////////////////////////////////////////////////////////////////////

在新版本的springboot中,支持了gif、jpg和png的圖片形式的banner打印。當然,并不會把圖片直接打印在控制臺,而是將其像素解析轉換成assii編碼之后打印。

對于gif動圖,會把動圖的每個圖片都打印出來,如果動圖比較大,打印時間較長。可以嘗試一下,但建議不要使用gif。

在banner.txt中,還可以進行一些設置,比如上圖中的${ansicolor.bright_yellow}。

  • 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.txt或banner圖片時,默認圖形存儲在哪里了呢?下面我們了解一下banner接口。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
@functionalinterface
public interface banner {
  // 打印banner
  void printbanner(environment environment, class<?> sourceclass, printstream out);
  enum mode {
    // 關閉
    off,
    // 控制臺
    console,
    // 日志文件
    log
  }
}

在banner接口中提供了打印banner的方法和一個枚舉類。枚舉類有三個值:off、console、log,用來控制banner的打印,分別對應:關閉打印、控制臺打印和日志打印。

banner接口的實現主要有resourcebanner、imagebanner、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
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 + ")" : "";
    stringbuilder padding = new stringbuilder();
    while (padding.length() < strap_line_size
        - (version.length() + spring_boot.length())) {
      padding.append(" ");
    }
    printstream.println(ansioutput.tostring(ansicolor.green, spring_boot,
        ansicolor.default, padding.tostring(), ansistyle.faint, version));
    printstream.println();
  }
}

在printbanner的方法實現中,首先打印了默認的banner字符串數組,然后將spring_boot和版本信息進行拼接打印。

banner的參數設置

banner的參數設定可以通過兩種形式,一種是代碼的形式,一種是配置文件的形式。

使用代碼的形式首先要將默認的main方法進行改造,手動創建springapplication對象,然后設置相應的參數。示例代碼:

?
1
2
3
4
5
6
7
public static void main(string[] args) {
  springapplication app = new springapplication(springbootbannerapplication.class);
  app.setbannermode(banner.mode.console);
  banner banner = new imagebanner(new classpathresource("banner1.png"));
  app.setbanner(banner);
  app.run(args);
}

通過配置文件設置就比較簡單,直接在application.properties中進行配置,springboot已經幫我們預制好了相應的參數。

?
1
2
3
4
5
6
7
8
spring.banner.location=classpath:banner1.png
spring.banner.image.margin=2
spring.banner.image.height=76
spring.banner.charset=utf-8
spring.banner.image.invert=false
spring.banner.image.location=banner1.png
spring.main.banner-mode=console
spring.main.show-banner=true

其中spring.main.show-banner來控制是否打印banner,在新版本中不建議使用,可以使用spring.main.banner-mode代替,將其值設置為off即可關閉banner的打印。

引入文本banner通過spring.banner.location來指定,引入圖片相關的banner需要通過spring.banner.image.location來指定路徑,否則會出現亂碼情況。

如果不想顯示banner,可以在代碼中通過setbannermode(banner.mode.off)方法或通過參數配置spring.main.banner-mode=off來關閉banner的打印。上面示例中已經有所展示。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:http://www.choupangxia.com/topic/detail/137

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 狠狠干日日操 | 亚洲人成在线播放 | 和日本免费不卡在线v | 99在线观看免费视频 | 果冻传媒林予曦图片 | 国内自拍网红在综合图区 | 22sihu国产精品视频影视资讯 | 视频久久 | 久久精品中文字幕 | 午夜精品在线视频 | jazz欧美人免费xxxxxx | 九九热国产视频 | 欧美日日操 | 午夜影院小视频 | 亚洲国产精品成人午夜在线观看 | 欧美日韩国产另类一区二区三区 | 视频一区二区国产 | 2021精品国夜夜天天拍拍 | xxx86日本人| 国产成人一区二区三区在线视频 | www.毛片网站 | 日日干天天爽 | 免费高清视频免费观看 | 四虎影院在线 | 亚洲视频在线免费 | 荡娃艳妇有声小说 | yin娃sao货调教情趣用品店 | 亚洲国产精品综合久久一线 | 99r在线观看| 日韩欧美在线视频一区二区 | 亚洲第一色视频 | 毛片免费在线视频 | 国内精品久久久久小说网 | 国产精品51麻豆cm传媒 | 99精品全国免费7观看视频 | 日本高清中文 | 精品国产福利一区二区在线 | 亚洲高清色图 | 美女牲交毛片一级视频 | 国产123区在线视频观看 | 国产成人99久久亚洲综合精品 |