今天来搞点有趣的事情(恶趣味你直说),一个没有脑洞的程序员和咸鱼有什么区别,各种程序里面的彩蛋就是最好的例证,写完业务代码之余,娱乐一下自己,还是蛮有趣的。 今天我来搞得事就是给Spring Boot程序换个Banner,让人一眼就看出,嗯这个程序是你写,那多酷~~啊。


先晒一下我的Banner

my-banner

原先的Spring Boot的Banner是长这样的

old-banner 这一点也不独特,一点也不极客! 不开心呢! 我要搞事情!


所以这是怎么做到的呢

其实没有那么多的套路,异常的简单,Spring Boot的开发者已经给你准备好了各种方便的接口

1、第一步

main/resources目录下创建一个banner.txt

create-banner-txt

2、第二步

banner.txt里头开始填你要显示的banner,我们先来试试Hello World!

try-out 运行一下下

try-run 看!Banner已经被替换掉了!

如果这样就满足了的话,就不是一个充满脑洞优秀的程序员了。 我们继续!

3、第三步

你或许会问了,我的Banner里头颜色是怎么弄的 在Spring的Wiki里面介绍了在banner中可以用到的一些变量,链接

变量 描述
${application.title} 程序的名称,来源是MANIFEST.MF中的Implementation-Title的值
${application.version} 当前程序的版本,来源是MANIFEST.MF中的Implementation-Version的值
${application.formatted-version} 格式化后的程序版本,(Ex. (v1.0))
${spring-boot.version} SpringBoot的版本,(Ex. 1.4.3.Release)
${spring-boot.formatted-version} 格式化后的SpringBoot版本,(Ex. (v1.4.5.Release))
${Ansi.NAME} (or ${AnsiColor.NAME}, ${AnsiBackground.NAME}, ${AnsiStyle.NAME}) ANSI编码的参数,NAME为ANSI中的别名

注意:所有Ansi开头的命令作用域是整个banner。

4、ANSI颜色参考

ansi-color 来源:Wiki - ANSI escape code

5、文字生成

单纯的一个Hello World!还是不够酷!我们来生成一个由标点组成的文字,用上现成的 Text to ASCII Art Generator

ascii-art 生成好之后直接在下面的框框里面全选(Win:Ctrl+A;Mac:Command+A)复制到banner即可

6、如果你嫌烦的话

可爱的Banner固然好看,但是可能会影响日志分析系统的工作,所以如果我们要去掉Banner的话只需要修改我们的Application.java就可以了,修改后的main方法如下:

public static void main(String[] args) {
    SpringApplication app = new SpringApplication(MySpringConfiguration.class);
    app.setBannerMode(Banner.Mode.OFF);
    app.run(args);
}

总结

折腾! 其实…………还是蛮好玩的是吧哈哈!! 最后奉上我的banner.txt

${AnsiColor.BRIGHT_YELLOW}
  ////////////////////////////////////////////////////////////////////
  //                          _ooOoo_                               //
  //                         o8888888o                              //
  //                         88" . "88                              //
  //                         (| ^_^ |)                              //
  //                         O\  =  /O                              //
  //                      ____/`---'\____                           //
  //                    .'  \\|     |//  `.                         //
  //                   /  \\|||  :  |||//  \                        //
  //                  /  _||||| -:- |||||-  \                       //
  //                  |   | \\\  -  /// |   |                       //
  //                  | \_|  ''\---/''  |   |                       //
  //                  \  .-\__  `-`  ___/-. /                       //
  //                ___`. .'  /--.--\  `. . ___                     //
  //              ."" '<  `.___\_<|>_/___.'  >'"".                  //
  //            | | :  `- \`.;`\ _ /`;.`/ - ` : | |                 //
  //            \  \ `-.   \_ __\ /__ _/   .-` /  /                 //
  //      ========`-.____`-.___\_____/___.-`____.-'========         //
  //                           `=---='                              //
  //      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^        //
  //              佛祖保佑       永不宕机       永无BUG                 //
  ////////////////////////////////////////////////////////////////////
${AnsiColor.BRIGHT_BLUE}
   _____          _____      _        _          _______        _
  / ____|        |  __ \    | |      | |        |__   __|      | |
 | |     ___  ___| |__) |__ | |_ __ _| |_ ___      | | ___  ___| |__
 | |    / _ \/ __|  ___/ _ \| __/ _` | __/ _ \     | |/ _ \/ __| '_ \
 | |___| (_) \__ \ |  | (_) | || (_| | || (_) |    | |  __/ (__| | | |
  \_____\___/|___/_|   \___/ \__\__,_|\__\___/     |_|\___|\___|_| |_|
${AnsiColor.BRIGHT_RED}
                                    With SpringBoot${spring-boot.formatted-version}