对于使用过Spring Boot的开发者来说,程序启动的时候输出的由字符组成的Spring符号并不陌生。这个是Spring Boot为自己设计的Banner:
1 2 3 4 5 6 7
   |   .   ____          _            __ _ _    /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \   ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \    \\/  ___)| |_)| | | | | || (_| |  ) ) ) )     '  |____| .__|_| |_|_| |_\__, | / / / /    =========|_|==============|___/=/_/_/_/    :: Spring Boot ::        (v1.3.3.RELEASE)  
   | 
 
如果有人不喜欢这个输出,本文说一下怎么修改。
1. 第一种方式:修改的时候,进行设置,在Application的main方法中:
SpringApplication application = new SpringApplication(App.class);
 /*
 * Banner.Mode.OFF:关闭;
 * Banner.Mode.CONSOLE:控制台输出,默认方式;
 * Banner.Mode.LOG:日志输出方式;
 */ application.setBannerMode(Banner.Mode.OFF);
 application.run(args);
2. 第二种方式:修改banner.txt配置文件
在src/main/resouces下新建banner.txt,在文件中加入:
1 2 3 4 5 6 7 8 9 10 11
   | #这个是MANIFEST.MF文件中的版本号 ${application.version}              
  #这个是上面的的版本号前面加v后上括号 ${application.formatted-version}
  #这个是springboot的版本号 ${spring-boot.version}             
  #这个是springboot的版本号 ${spring-boot.formatted-version}
   | 
 
3. 第三种方式:重写接口Banner实现
SpringBoot提供了一个接口org.springframework.boot.Banner,他的实例可以被传给SpringApplication的setBanner(banner)方法。如果你闲得不行非要着重美化这个命令行输出的话,可以重写Banner接口的printBanner方法。
4. 第四种方式:在application.properties进行配置
在application.proerpties进行banner的显示和关闭:
1 2
   | ### 是否显示banner,可选值[true|false] spring.main.show-banner=false
   | 
 
使用Spring Boot启动的jar包总是会显示一个Spring的图标:
1 2 3 4 5 6 7
   | .   ____          _            __ _ _ /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/  ___)| |_)| | | | | || (_| |  ) ) ) ) '  |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot ::        (v1.3.3.RELEASE)
   | 
 
实际上Spring Boot在这个位置,放了一个彩蛋,我们是可以自定义这个图标的。
 我们可以在resource目录下面放入一个banner.txt
 文件,Spring Boot启动项目的时候就会优先启动这个文件中的内容。
 这里给大家推荐两个个字符画生成的网站,我们可以利用生成的字符串放入这个banner.txt
 文件:
http://www.network-science.de/ascii/
 http://patorjk.com/software/taag/
比如我生成一个star wars的图标:
1 2 3 4 5 6 7 8 9 10 11 12 13
   |      _______.___________.    ___      .______              /       |           |   /   \     |   _  \            |   (----`---|  |----`  /  ^  \    |  |_)  |            \   \       |  |      /  /_\  \   |      /         .----)   |      |  |     /  _____  \  |  |\  \----.    |_______/       |__|    /__/     \__\ | _| `._____|   
  ____    __    ____  ___      .______          _______. \   \  /  \  /   / /   \     |   _  \        /       |  \   \/    \/   / /  ^  \    |  |_)  |      |   (----`   \            / /  /_\  \   |      /        \   \        \    /\    / /  _____  \  |  |\  \----.----)   |        \__/  \__/ /__/     \__\ | _| `._____|_______/    
   | 
 
这样启动的时候

 但是仅仅是这样看起来并不好看,还不如原来的图标好看呢。实际上Spring Boot为这个彩蛋提供了不少美化功能。
 Spring Boot提供了一个枚举类
,这个类可以控制
中的字符颜色,而且非常容易使用。
 比如我可以将字符设置成颜色:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
   | ${AnsiColor.BRIGHT_YELLOW}      _______.___________.    ___      .______              /       |           |   /   \     |   _  \            |   (----`---|  |----`  /  ^  \    |  |_)  |            \   \       |  |      /  /_\  \   |      /         .----)   |      |  |     /  _____  \  |  |\  \----.    |_______/       |__|    /__/     \__\ | _| `._____|   
  ____    __    ____  ___      .______          _______. \   \  /  \  /   / /   \     |   _  \        /       |  \   \/    \/   / /  ^  \    |  |_)  |      |   (----`   \            / /  /_\  \   |      /        \   \        \    /\    / /  _____  \  |  |\  \----.----)   |        \__/  \__/ /__/     \__\ | _| `._____|_______/    
  | 
 
再重新启动项目,启动界面就会变成这个样子:

类似 ${AnsiColor.BRIGHT_YELLOW} 这种表达式,其实可以放置多个,启动界面上的颜色,总是会根据AnsiColor 的设置改变界面的颜色,这样启动的界面就会显示多种不同的颜色了。
除了这样美化的功能之外,启动界面很重要的功能就是要告诉我们这个项目的一些重要信息。
1 2 3 4
   | `${application.version}` 这个是`MANIFEST.MF`文件中的版本号 `${application.formatted-version}` 这个是上面的的版本号前面加v后上括号 ` ${spring-boot.version}` 这个是springboot的版本号 `${spring-boot.formatted-version}`同上
  | 
 
把以上信息通过${} 放入banner.txt中,就会打印出项目对应的信息。
 这里放一个完整的demo:
1 2 3 4 5 6 7 8 9 10
   | ${AnsiColor.BRIGHT_YELLOW}      _______.___________.    ___      .______         ____    __    ____  ___      .______          _______.     /       |           |   /   \     |   _  \        \   \  /  \  /   / /   \     |   _  \        /       |    |   (----`---|  |----`  /  ^  \    |  |_)  |        \   \/    \/   / /  ^  \    |  |_)  |      |   (----`     \   \       |  |      /  /_\  \   |      /          \            / /  /_\  \   |      /        \   \ .----)   |      |  |     /  _____  \  |  |\  \----.      \    /\    / /  _____  \  |  |\  \----.----)   | |_______/       |__|    /__/     \__\ | _| `._____|       \__/  \__/ /__/     \__\ | _| `._____|_______/
  ${AnsiColor.BRIGHT_BLUE} ::: Project (version:${application.version}) :::             \(^O^)/    Spring-Boot ${spring-boot.version}
  | 
 
启动就会是这一个样子:

如果颜色没有变,那么还需要设置:spring.output.ansi.enabled=ALWAYS
在2018年的最后一天,借用Spring Boot的Banner向各位程序猿同仁们问候一声:Happy New Year。

接下来我们就来介绍一下这个轻松愉快的自定义banner功能。实现的方式非常简单,我们只需要在Spring Boot工程的/src/main/resources 目录下创建一个banner.txt 文件,然后将ASCII字符画复制进去,就能替换默认的banner了。
 比如上图中的输出,就采用了下面的banner.txt 内容:
1 2 3 4 5 6 7 8 9 10 11
   | ${AnsiColor.BRIGHT_GREEN} ##     ##    ###    ########  ########  ##    ##    ##    ## ######## ##      ##    ##    ## ########    ###    ######## ##     ##   ## ##   ##     ## ##     ##  ##  ##     ###   ## ##       ##  ##  ##     ##  ##  ##         ## ##   ##     ## ##     ##  ##   ##  ##     ## ##     ##   ####      ####  ## ##       ##  ##  ##      ####   ##        ##   ##  ##     ## ######### ##     ## ########  ########     ##       ## ## ## ######   ##  ##  ##       ##    ######   ##     ## ######## ##     ## ######### ##        ##           ##       ##  #### ##       ##  ##  ##       ##    ##       ######### ##   ## ##     ## ##     ## ##        ##           ##       ##   ### ##       ##  ##  ##       ##    ##       ##     ## ##    ## ##     ## ##     ## ##        ##           ##       ##    ## ########  ###  ###        ##    ######## ##     ## ##     ## ${AnsiColor.BRIGHT_RED} Application Version: ${application.version}${application.formatted-version} Spring Boot Version: ${spring-boot.version}${spring-boot.formatted-version}
  | 
 
从上面的内容中可以看到,还使用了一些属性设置:
1 2 3 4 5
   | `${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输出的字符画。
http://patorjk.com/software/taag
 http://www.network-science.de/ascii/
 http://www.degraeve.com/img2txt.php
作者:蝉鸣的雨
链接:https://www.jianshu.com/p/bfbcabc4af1d
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
本文地址: https://github.com/maxzhao-it/blog/post/18026/