专业的编程技术博客社区

网站首页 > 博客文章 正文

如何定制 Spring Boot 的 Banner?

baijin 2024-08-15 00:38:13 博客文章 13 ℃ 0 评论

相信用过 Spring Boot 的朋友们一定在启动日志中见过类似如下的内容,比如在启动 Spring Boot 时,控制台默认会打印 Spring Boot Logo 以及版本信息,这是 Spring Boot 固定的还是可自定义的呢?

答案是,Spring Boot 支持自定义 Banner,接下来本文将详细讨论如何定制 Banner 内容,首先来了解下 Banner 是如何出现的。

Banner 是如何出现的?

初始 Banner 的代码是 SpringApplicationBannerPrinter 类,Spring Boot 默认寻找 Banner 的顺序是:

  • 首先依次在 Classpath 下找文件 banner.gif,banner.jpg 和 banner.png,使用优先找到的
  • 若没找到上面文件的话,继续 Classpath 下找 banner.txt
  • 若上面都没有找到的话, 用默认的 SpringBootBanner,也就是上面输出的 Spring Boot Logo

一般是把 banner.* 文件放在 src/main/resources/ 目录下。

我们可以用属性 banner.location 设定 Spring Boot 在不同于 Classpath 下找以上 banner.txt 文件,banner.charset 设定 banner.txt 的字符集,默认为 UTF-8。属性 banner.image.location 用于指定寻找 banner.(gif|jpg|png) 文件的位置。

如果同时存在图片(如 banner.jpg) 和 banner.txt , 则它们会同时显示出来,先图片后文字,但同时存在多个图片 banner.(gif|jpg|png),则只会显示第一张图片。

  • 对于文本文件,Spring Boot 会将其直接输出。
  • 对于图像文件( banner.gif 、banner.jpg 或 banner.png ),Spring Boot 会将图像转为 ASCII 字符,然后输出。

变量

banner.txt 文件中还可以使用变量来设置字体、颜色、版本号。

配置

application.properties 中与 Banner 相关的配置:

当然,也可以在 YAML 文件中配置,例如:

示例

新建 Spring Boot 项目(基于 Spring Boot 1.5.7)

在 Spring Boot 项目中的 resources 目录下添加 banner.txt 文件,内容如下:

启动 Spring Boot 应用后,控制台输出的 Banner 如下:

推荐几个生成字符画的网站,可以将生成的字符画放入这个 banner.txt 文件:

  • http://www.network-science.de/ascii/
  • http://patorjk.com/software/taag
  • http://www.degraeve.com/img2txt.php

总结

默认 Spring Boot 会注册一个 SpringBootBanner 的单例 Bean,用来负责打印 Banner。

如果想完全个人定制 Banner,可以先实现 org.springframework.boot.Banner#printBanner 接口来自己定制 Banner。在将这个 Banner 通过 SpringApplication.setBanner() 方法注入 Spring Boot。

一般自定义 Spring Boot Banner 是企业/团队/项目的 Slogan。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表