【基础篇】SpringBoot 自定义 Banner

发布时间:2024-01-19 18:30

写在最前

我们在启动 Spring Boot 项目时会在控制台打印如下内容(logo 和版本信息):

  .   ____          _            __ _ _
 /\\\\ / ___\'_ __ _ _(_)_ __  __ _ \\ \\ \\ \\
( ( )\\___ | \'_ | \'_| | \'_ \\/ _` | \\ \\ \\ \\
 \\\\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  \'  |____| .__|_| |_|_| |_\\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::                (v2.6.6)

动手替换

生成 Banner

通过如下链接可以生成自己项目想要的 ASCII 艺术字

  • 定制化 ASCII 字符1
  • 定制化 ASCII 字符2
  • 定制化 ASCII 图片

如下生成 banner 字符

                          To My Love!
  -=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-

               __        __        __        __
 .*.         /~ .~\\    /~  ~\\    /~ .~\\    /~  ~\\
 ***        \'      `\\/\'      *  \'      `\\/\'      *
  V        (                .*)(               . *)
/\\|/\\       \\     Ming   . *./  \\      Yue   . *./
  |          `\\ .      . .*/\'    `\\ .      . .*/\'     .*.
  |            `\\ * .*. */\' _    _ `\\ * .*. */\'       ***
                 `\\ * */\'  ( `\\/\'*)  `\\ * */\'          V
                   `\\/\'     \\   */\'    `\\/\'          /\\|/\\
                             `\\/\'                      |

     --+++==##<<{{******** Ming Yue ********}}>>##==++--

替换 Banner

项目的 resources 资源目录下创建 banner.txt 文件。例如:把上面生成的 banner 替换进去

\"【基础篇】SpringBoot

再次启动项目,打印如上面 banner 字符即可。此时我们发现对应的 Spring Boot 的一些版本信息没有了,如果还想要,可以添加。

追加 Spring Boot 版本信息等

  1. ${spring-boot.version}:Spring Boot 版本号;
  2. ${spring-boot.formatted-version}:格式化后的 Spring Boot 版本号信息。
  3. ${application.version}:MANIFEST.MF 文件中的版本号;
  4. ${application.formatted-version}:格式化后的 MANIFEST.MF 文件中的版本号信息;

追加配置文件 application.properties 中定义的变量

app.author=Strive

最终文件如下,再次启动项目查看打印

                          To My Love!
  -=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-

               __        __        __        __
 .*.         /~ .~\\    /~  ~\\    /~ .~\\    /~  ~\\
 ***        \'      `\\/\'      *  \'      `\\/\'      *
  V        (                .*)(               . *)
/\\|/\\       \\     Ming   . *./  \\      Yue   . *./
  |          `\\ .      . .*/\'    `\\ .      . .*/\'     .*.
  |            `\\ * .*. */\' _    _ `\\ * .*. */\'       ***
                 `\\ * */\'  ( `\\/\'*)  `\\ * */\'          V
                   `\\/\'     \\   */\'    `\\/\'          /\\|/\\
                             `\\/\'                      |

     --+++==##<<{{******** Ming Yue ********}}>>##==++--
:: Spring Boot :: (${spring-boot.version})
                                           --by ${app.author}

打印如下:

                          To My Love!
  -=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-

               __        __        __        __
 .*.         /~ .~\\    /~  ~\\    /~ .~\\    /~  ~\\
 ***        \'      `\\/\'      *  \'      `\\/\'      *
  V        (                .*)(               . *)
/\\|/\\       \\     Ming   . *./  \\      Yue   . *./
  |          `\\ .      . .*/\'    `\\ .      . .*/\'     .*.
  |            `\\ * .*. */\' _    _ `\\ * .*. */\'       ***
                 `\\ * */\'  ( `\\/\'*)  `\\ * */\'          V
                   `\\/\'     \\   */\'    `\\/\'          /\\|/\\
                             `\\/\'                      |

     --+++==##<<{{******** Ming Yue ********}}>>##==++--
:: Spring Boot :: (2.6.6)
                                           --by Strive

实现原理

Banner 接口专门实现这个操作。要想自定义打印 banner ,只要自定义一个类实现这个接口,重写 printBanner 方法进行打印即可。Springboot 项目启动时,会创建我们的实现类对象,并调用对象的 printBanner 方法。

package org.springframework.boot;

import java.io.PrintStream;
import org.springframework.core.env.Environment;

@FunctionalInterface
public interface Banner {
  void printBanner(Environment environment, Class<?> sourceClass, PrintStream out);

  public static enum Mode {
    OFF, // 关闭 banner 打印
    CONSOLE, // 打印 banner 到 控制台
    LOG; // 打印 banner 到日志文件

    private Mode() {
    }
  }
}

printBanner 默认有三个实现:

  • ImageBanner:加载和打印图片 banner;
  • ResourceBanner:加载和打印字符 banner;
  • SpringBootBanner:默认情况下,会使用 SpringBootBanner 实现类打印 banner;

\"【基础篇】SpringBoot

ItVuer - 免责声明 - 关于我们 - 联系我们

本网站信息来源于互联网,如有侵权请联系:561261067@qq.com

桂ICP备16001015号