PK创意闹新春,我正在参加「春节创意投稿大赛」,详情请看:春节创意投稿大赛

新年新气象,别光顾着打扮自己,也要打扮下自己吃饭的家伙SpringBoot的banner

你在SpringBoot服务每次启动的时候是不是都能看到下面输出的日志(默认的图案格式)

  .   ____          _            __ _ _
 /\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )___ | '_ | '_| | '_ / _` | \ \ \ \
 \/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |___, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::                (v2.5.6)
复制代码

这个小彩蛋用默认的多无聊,我们可以根据自己的需求客制化,把每个服务换成公司/私人的logo ,岂不是更有辨识度,更有趣。

直接开始

1. 实现banner类

需要自己实现banner的类,不是很方便

新建一个类实现spring的Bnner类,out.println()中输出自己的内容,代码如下图:

启动类的代码,传入上面实现的类即可

public static void main(String[] args) {
    SpringApplication app = new SpringApplication(AjisunMybatisApplication.class);
    // 设置自己实现的banner
    app.setBanner(new SelfBanner());
    // 启动
    app.run(args);
  }
复制代码

启动类的代码,new SpringApplication()传入上面实现的类即可

2. 使用spring提供的方式-banner文件

推荐使用,没有代码侵入,比较方便

这种配置是Spring boot中支持的,具体的实现可以看下SpringApplicationBannerPrinter类,主要方法是getTextBanner 和getImageBanner分别获取txt的文本banner和图片的banner,还是比较简单的

  • 使用classpath下的指定文件banner.txt

在resource下面新建一个txt文件,里面放入需要输出的内容,如下

启动服务就可以了,小老虎就出来了,效果如下

对于txt的文本banner如上输出都是单调的颜色,不够美观,我们可以通过以下的方式自定义输出的个性化的颜色。

Spring提供了三个枚举类来设定字符的颜色,具体可以看下三个类,分别是:

  • AnsiColor: 用来设定字符的颜色

  • AnsiBackground: 用来设定字符的背景色

  • AnsiStyle: 用来控制加粗、斜体、下划线等等。

在banner.txt中的配置如下

启动服务输出(亮红的背景,亮黄的字体还加粗,多喜庆)

  • 使用classpath下的指定图片banner.gif,banner.jpg,banner.png

直接使用图片生成banner很多时候效果不是很好,建议用第三方的工具生成ASCII之后复制到banner.txt中,效果更好。

这里使用的是微博的logo作为图片素材(此logo输出效果比较好,试了其他很多图片都不太行)

启动服务输出如下

  • 当然还可以通过yml配置配置指定路径的图片格式的banner或者txt格式的banner
spring
    banner:
      charset: UTF-8 # Banner file encoding.
      location: classpath:mapper/banner.txt # Banner file location.
      image:
         location: classpath:lcsm.gif # Banner image file location (jpg/png can also be used).
         width:  # Width of the banner image in chars (default 76)
         height: # Height of the banner image in chars (default based on image height)
         margin: # Left hand image margin in chars (default 2)
         invert: # If images should be inverted for dark terminal themes (default false)
复制代码

这几种配置的优先级 :spring.banner.location = spring.banner.image.location > resources下的banner.txt = resources下的banner.png(.jpg/.gif) > 自建实现类Banner > springboot默认

如果txt和图片同时有效存在,那么启动服务两个都会输出,先输出图片后输出txt。

佛祖保佑

(佛祖保佑:永不宕机,需求不改,永无bug,上线顺利,身体健康,头发永驻,告别单身,升职加薪)

${AnsiColor.BRIGHT_YELLOW}${AnsiStyle.BOLD}
​
                        
                        //                          _ooOoo_                               //
                        //                         o8888888o                              //
                        //                         88" . "88                              //
                        //                         (| ^_^ |)                              //
                        //                         O\  =  /O                              //
                        //                      ____/`---'____                           //
                        //                    .'  \|     |//  `.                         //
                        //                   /  \|||  :  |||//  \                        //
                        //                  /  _||||| -:- |||||-  \                       //
                        //                  |   | \\  -  /// |   |                       //
                        //                  | _|  ''---/''  |   |                       //
                        //                  \  .-__  `-`  ___/-. /                       //
                        //                ___`. .'  /--.--\  `. . ___                     //
                        //              ."" '<  `.____<|>_/___.'  >'"".                  //
                        //            | | :  `- `.;`\ _ /`;.`/ - ` : | |                 //
                        //            \  \ `-.   _ __\ /__ _/   .-` /  /                 //
                        //      ========`-.____`-.________/___.-`____.-'========         //
                        //                           `=---='                              //
                        //      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^        //
                        // ${AnsiColor.BRIGHT_RED}                           佛祖保佑                 ${AnsiColor.BRIGHT_YELLOW}            //
                        // ${AnsiColor.BRIGHT_RED}       永不宕机     需求不改     永无BUG    上线顺利   ${AnsiColor.BRIGHT_YELLOW}            //
                        // ${AnsiColor.BRIGHT_RED}       身体健康     头发永驻     告别单身    升职加薪  ${AnsiColor.BRIGHT_YELLOW}            //
                        ///
复制代码

输出效果如下:

生成ASCII的在线地址

赶快搞一个专属自己的图案吧

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐