CosPotato's Blog

Spring Boot的Banner

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


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

原先的Banner
这一点也不独特,一点也不极客!
不开心呢!
我要搞事情!

先晒一下我的Banner

我的Banner


所以这是怎么做到的呢

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

1、第一步

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

2、第二步

banner.txt里头开始填你要显示的banner,我们先来试试Hello World!
尝试
运行一下下
尝试运行
看!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颜色
来源:Wiki - ANSI escape code

5、文字生成

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

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

6、如果你嫌烦的话

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

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

总结

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

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