相关推荐recommended
SpringBoot——Banner介绍
作者:mmseoamin日期:2024-01-19

一、什么是Banner

Banner即横幅标语,我们在启动SpringBoot项目时会将Banner信息打印至控制台。我们可以输出一些图形、SpringBoot版本信息等内容。默认情况下是通过实现类SpringBootBanner输出的Banner内容,默认的输出内容如下。

SpringBoot——Banner介绍,第1张

二、自定义Banner

如果不想使用默认的Banner,我们可以通过自定义的方式在控制台输出我们想要打印的内容。SpringBoot支持输出图片和txt文件中的内容。下面以2.3.3.RELEASE版本进行介绍。

  1. 自定义Banner文本文件

默认情况下,只需要在resources目录下创建banner.txt文件,当项目启动时即可打印我们banner.txt中的内容。banner.txt文件的内容是只打印字体为黄色的SpringBootDemo和字体为红色的Springboot版本号:

SpringBoot——Banner介绍,第2张

效果如下图:

SpringBoot——Banner介绍,第3张
  1. Banner图片文件

我们也可以将图片作为需要Banner打印的资源,默认情况下,我们只需要将图片放置在resources目录下,并且图片命名为banner.jpg(只支持后缀为gif、jpg、png的格式)即可。如下图:

SpringBoot——Banner介绍,第4张

效果如下图:

SpringBoot——Banner介绍,第5张
  1. 注意点

  1. 图片和TXT文件可以同时存在并输出,但是图片的优先级高于TXT文件,即项目启动时先输出图片再输出TXT的内容;

  1. 若默认情况下,且resources目录下同时存在名为banner,后缀不同的图片,则只会输出其中一张图片,输出的优先级为(banner.gif > banner.jpg > banner.png)。

三、banner.txt文件内容配置介绍

  1. AnsiColor(设置字体颜色)

在banner.txt中可以通过如${AnsiColor.BRIGHT_YELLOW}设置后面输出内容的颜色。SpringBoot共提供了17种字体颜色,分别是DEFAULT、BLACK、RED、GREEN、YELLOW、BLUE、MAGENTA、CYAN、WHITE、BRIGHT_BLACK、BRIGHT_RED、BRIGHT_GREEN、BRIGHT_YELLOW、BRIGHT_BLUE、BRIGHT_MAGENTA、BRIGHT_CYAN、BRIGHT_WHITE。可以通过AnsiColor类查看。

  1. AnsiBackground(设置背景颜色)

在banner.txt中可以通过如${AnsiBackground.BLUE}设置后面输出内容的背景颜色。SpringBoot共提供了17种背景颜色,分别是DEFAULT、BLACK、RED、GREEN、YELLOW、BLUE、MAGENTA、CYAN、WHITE、BRIGHT_BLACK、BRIGHT_RED、BRIGHT_GREEN、BRIGHT_YELLOW、BRIGHT_BLUE、BRIGHT_MAGENTA、BRIGHT_CYAN、BRIGHT_WHITE。可以通过AnsiBackground类查看。

  1. AnsiStyle(设置字体样式)

在banner.txt中可以通过如${AnsiStyle.BOLD}设置后面输出内容的字体样式。SpringBoot共提供了17种背景颜色,分别是NORMAL(正常)、BOLD(加粗)、FAINT(模糊)、ITALIC(倾斜)、UNDERLINE(下划线)。可以通过AnsiStyle类查看。自测字体样式只有BOLD和UNDERLINE生效,NORMAL、BOLD、FAINT、ITALIC效果是一样的。

如果想将输出的Spring Boot Version内容的字体颜色、背景颜色和字体样式均改变可以通过以下方式实现。如将Spring Boot版本号设置为红色字体,白色背景,字体加粗带下划线,可以通过${AnsiColor.BRIGHT_RED}${AnsiBackground.BLACK}${AnsiStyle.UNDERLINE}${AnsiStyle.BOLD}实现样式的多重设置。实现效果如下图。

SpringBoot——Banner介绍,第6张
  1. spring-boot.version

项目所使用的SpringBoot的版本号。

  1. spring-boot.formatted-version

格式化后的${spring-boot.version}版本信息。

  1. application.version

用来获取MANIFEST.MF文件中的版本号。

  1. application.formatted-version

格式化后的${application.version}版本信息。

四、Banner相关属性及配置介绍

  1. spring.main.banner-mode

属性用于设置程序运行时banner显示的模式。Banner有三种模式:OFF(禁止打印Banner)、CONSOLE(打印Banner至控制台)、LOG(打印Banner至日志文件),可以通过Banner接口下Mode枚举看到。默认值是console。

  1. spring.main.show-banner

该属性用于设置程序运行时是否显示banner,默认值是true。该属性可由上面介绍的spring.main.banner-mode属性替代。

  1. spring.banner.location

该属性用于配置Banner文本资源位置。默认值为classpath:banner.txt,即默认情况下,程序启动时会找resources目录下的banner.txt文件。若配置了该属性,如配置为spring.banner.location=classpath:banner/banner-txt.txt,则项目启动后会去resources/banner目录下加载banner-test.txt文件。

  1. spring.banner.image.location

该属性用于配置Banner图片的文件位置,(也可使用jpg或png)。默认值为classpath:banner.gif,即默认情况下,程序启动时会找resources目录下,名为banner,后缀为(gif,jpg,png)的图片文件。且按gif,jpg,png的顺序匹配后缀,若匹配到则输出该图片。若配置了该属性,如配置为spring.banner.image.location=classpath:banner/banner-image.jpg,则项目启动后会去resources/banner目录下加载banner-image.jpg图片。

  1. spring.banner.charset

该属性用于配置banner文件的字符集编码,默认值是UTF-8。

  1. spring.banner.image.bitdepth

该属性用于配置banner图片的ANSI颜色的位深度,默认值是4。支持的值是4(16色)或8(256色)。

  1. spring.banner.image.height

该属性用于配置banner图像的字符高度(默认基于图像高度)

  1. spring.banner.image.invert

该属性用于配置暗终端主题的图片是否应该倒置,默认值是false。

  1. spring.banner.image.margin

该属性用于配置Banner图片左手图像边距,单位为字符。默认值为2。

  1. spring.banner.image.pixelmode

该属性用于配置渲染图像时要使用的像素模式,默认值为TEXT。可选择模式为TEXT和BLOCK。

  1. spring.banner.image.width

该属性用于配置Banner图像的宽度,单位为chars,默认值为76。

五、禁用Banner打印

Banner有三种模式:OFF(禁止打印Banner)、CONSOLE(打印Banner至控制台)、LOG(打印Banner至日志文件),可以通过Banner接口下Mode枚举看到。如果不想打印Banner内容,可以通过如下四种方式禁用。

  1. 通过配置文件方式

在配置文件中配置spring.main.banner-mode=OFF或spring.main.show-banner=false。

  1. 通过代码形式

通过setBannerMode方法设置

SpringBoot——Banner介绍,第7张
  1. 通过设置虚拟机启动参数

在VM options中设置参数-Dspring.main.banner-mode=OFF。

SpringBoot——Banner介绍,第8张

4.通过Idea设置方式

通过勾选Hide banner隐藏Banner,如下图。

SpringBoot——Banner介绍,第9张

方式3和方式4本质上是一样的,都是通过在设置虚拟机参数的方式禁用Banner的打印。

SpringBoot——Banner介绍,第10张