SpringBoot之Banner


声明:本文转载自https://my.oschina.net/qixiaobo025/blog/1573647,转载目的在于传递更多信息,仅供学习交流之用。如有侵权行为,请联系我,我会及时删除。

插播一条广告→2021 ByteDance字节跳动内推←各城市、各方向的岗位都有,大量招人!


背景

初次运行SpringBoot的小伙伴想必对于SpringBoot打印的Banner很感兴趣

通常长成这样

一个Spring扑面而来~

那么我们能否定制自己的启动页呢?

源码

SpringBoot在启动时会调用如下一段代码 

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长成这样

/**  * 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

/$$$$$$$$ /$$$$$$ | $$_____//$$__  $$ | $$     | $$  \__/ | $$$$$  | $$$$$$$ | $$__/  | $$__  $$ | $$     | $$  \ $$ | $$     |  $$$$$$/ |__/      \______/

我们可以看一下结果

哈哈 F6小人变成了这样!!!

生成文字banner可以使用 http://patorjk.com/software/taag/#p=display&f=Big%20Money-ne&t=F6 【同样可以用在javascript 打印出console~】

 

本文发表于2017年11月15日 00:33
(c)注:本文转载自https://my.oschina.net/qixiaobo025/blog/1573647,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如有侵权行为,请联系我们,我们会及时删除.

阅读 1015 讨论 0 喜欢 0

抢先体验

扫码体验
趣味小程序
文字表情生成器

闪念胶囊

直抵黄龙府,与诸君痛饮尔。

那时陪伴我的人啊,你们如今在何方。

不出意外的话,我们再也不会见了,祝你前程似锦。

这世界真好,吃野东西也要留出这条命来看看

行业标准总是平庸的

快捷链接
网站地图
提交友链
Copyright © 2016 - 2021 Cion.
All Rights Reserved.
京ICP备2021004668号-1