(二)从零搭建后端框架——SpringBoot自定义Banner

1,293 阅读2分钟

前言

上一篇文章中,构建了Spring Boot项目,并且成功启动。在项目启动的时候,会在控制台中打印如下信息:

Banner
我们称之为Banner。

为什么会打印Banner

查看SpringApplicationBannerPrinter类的getBanner方法如下:

Banner

Spring Boot首先获取自定义的图片Banner和文本Banner,如果未自定义,则使用默认的Banner,即SpringBootBanner。

SpringBootBanner

看了SpringBootBanner类的BANNER常量,就可以一拍大腿说:原来它写死在代码里啊!它的printBanner方法就是真正打印的方法。

看了源码,我们发现可以自定义图片Banner和文本Banner,下面来实际操作下。

自定义图片Banner

图片Banner一般使用公司logo或者产品logo图片,支持gif、jpg、png格式,Spring Boot会解析图片的像素,然后用ANSII的方式输出到控制台。

比如我在网上找的微博的图标,然后把它放到src/resources文件夹下,命名为banner.png

微博图标

程序启动后可以看到控制台打印:

微博Banner

图片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}

程序启动后可以看到控制台打印:

佛祖Banner

在文本中可以使用一些占位符

  • ${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并没有真正上的作用。但是可以增加一些趣味性,权当解闷。

源码

github.com/zhuqianchan…

往期回顾