前言
在上一篇文章中,构建了Spring Boot项目,并且成功启动。在项目启动的时候,会在控制台中打印如下信息:
为什么会打印Banner
查看SpringApplicationBannerPrinter类的getBanner方法如下:
Spring Boot首先获取自定义的图片Banner和文本Banner,如果未自定义,则使用默认的Banner,即SpringBootBanner。
看了SpringBootBanner类的BANNER常量,就可以一拍大腿说:原来它写死在代码里啊!它的printBanner方法就是真正打印的方法。
看了源码,我们发现可以自定义图片Banner和文本Banner,下面来实际操作下。
自定义图片Banner
图片Banner一般使用公司logo或者产品logo图片,支持gif、jpg、png格式,Spring Boot会解析图片的像素,然后用ANSII的方式输出到控制台。
比如我在网上找的微博的图标,然后把它放到src/resources文件夹下,命名为banner.png
程序启动后可以看到控制台打印:
图片Banner支持一些配置
- spring.banner.image.location 指定Banner图片位置
- spring.banner.image.width 指定打印Banner宽度
- spring.banner.image.height 指定打印Banner高度
自定义文本Banner
文本Banner的话,需要制作banner.txt文件,同样放在src/resources文件夹下。文件制作可以使用在线网站,比如:www.bootschool.net/ascii-art
这里使用如下文本:
${AnsiColor.BRIGHT_RED}
_
_ooOoo_
o8888888o
88" . "88
(| -_- |)
O\ = /O
____/`---'\____
.' \\| |// `.
/ \\||| : |||// \
/ _||||| -:- |||||_ \
| | \\\ - /'| | |
| \_| `\`---'// |_/ |
\ .-\__ `-. -'__/-. /
___`. .' /--.--\ `. .'___
."" '< `.___\_<|>_/___.' _> \"".
| | : `- \`. ;`. _/; .'/ / .' ; |
\ \ `-. \_\_`. _.'_/_/ -' _.' /
================-.`___`-.__\ \___ /__.-'_.'_.-'================
`=--=-'
Spring Boot Version: ${spring-boot.version}
程序启动后可以看到控制台打印:
在文本中可以使用一些占位符
- ${AnsiColor.BRIGHT_RED} 控制台中输出内容的颜色
- ${application.version} 应用程序的版本号
- ${application.formatted-version} 应用程序的版本号(带有前缀v,比如v1.0)
- ${spring-boot.version} Spring Boot的版本号
- ${spring-boot.formatted-version} Spring Boot的版本号(带有前缀v,比如v1.0)
- ${application.title} 应用程序的标题
文本Banner支持一些配置
- spring.banner.location 指定Banner文本位置
- spring.banner.charset 设置文件编码,默认UTF-8
关闭Banner
如果不想显示Banner,可以编写:
@SpringBootApplication
public class FrameworkApplication {
public static void main(String[] args) {
SpringApplication application = new SpringApplication(FrameworkApplication.class);
// 关闭Banner
application.setBannerMode(Banner.Mode.OFF);
application.run(args);
}
}
也可以使用配置spring.main.banner-mode=off
进行关闭
总结
实际上,自定义Banner并没有真正上的作用。但是可以增加一些趣味性,权当解闷。