1、简述
在 Spring Boot 项目中,当应用启动时会显示默认的 Spring 标志和版本信息。定制化的启动 Banner 不仅可以美化应用,还能在项目中增加个性化的品牌印记,甚至可以提供一些关键信息。本文将介绍如何在 Spring Boot 项目中自定义启动 Banner,以及如何使用工具生成自定义文本和图像 Banner。

2、Spring Boot 默认 Banner
Spring Boot 默认的 Banner 位于 org/springframework/boot 包内的 spring-boot.jar 中。默认 Banner 只显示了 Spring 标志、版本和应用名称信息,效果如下:
  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::  (v2.5.4)
3、自定义 Banner
Spring Boot 支持三种方式来定制 Banner:
🔹 文本文件(ASCII Art):通过 banner.txt 文件设置 ASCII Art。
🔹 图片文件:通过 banner.jpg、banner.png 或 banner.gif 设置图片。
🔹 编程方式:通过编写 Java 代码自定义 Banner。
3.1 使用 banner.txt 定义 ASCII Art
最简单的方法是创建一个 banner.txt 文件并放置在 src/main/resources 目录中。启动应用时,Spring Boot 会自动加载该文件内容并替代默认 Banner。
实践步骤:
🔹 在 src/main/resources 中创建 banner.txt 文件。
🔹 编写 ASCII 文本图案。可以使用 Banner Generator 等工具生成自定义字符。
例如,将生成的 Banner 粘贴到 banner.txt 中:
  ____            _         _   ____             _  
 | __ ) _   _ ___| |_ _   _| | | __ )  __ _  ___| | __  
 |  _ \| | | / __| __| | | | | |  _ \ / _` |/ __| |/ /  
 | |_) | |_| \__ \ |_| |_| | | | |_) | (_| | (__|   <   
 |____/ \__,_|___/\__|\__,_|_| |____/ \__,_|\___|_|\_\  
在 Spring Boot 启动时,将显示此自定义 ASCII 文本。
3.2 使用图片作为 Banner
Spring Boot 支持使用图片作为 Banner。图片文件的格式可以是 PNG、GIF 或 JPG,系统会在启动时将图片渲染成 ASCII 格式。具体支持的图片格式为黑白图像。
实践步骤:
🔹 将 banner.png、banner.jpg 或 banner.gif 图片文件放在 src/main/resources 中。
🔹 启动项目,Spring Boot 会自动加载并显示图片的 ASCII 版本。
图片生成推荐工具
可以使用 Image to ASCII 这类工具生成黑白图片,将其导出为 PNG 或 JPG 格式,并命名为 banner.png。
3.3 通过编程方式自定义 Banner
如果希望在启动过程中动态设置 Banner,还可以通过 Java 代码实现。实现 Banner 接口来自定义 Banner,并将其注册到 Spring Boot 应用中。
🔹 创建一个实现 org.springframework.boot.Banner 接口的类:
package com.example.demo;
import org.springframework.boot.Banner;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Component;
import java.io.PrintStream;
@Component
public class CustomBanner implements Banner {
    @Override
    public void printBanner(Environment environment, Class<?> sourceClass, PrintStream out) {
        out.println("=================================");
        out.println("   Welcome to My Spring Boot App ");
        out.println("=================================");
    }
}
🔹 在 SpringApplication 中设置自定义 Banner:
import org.springframework.boot.Banner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication app = new SpringApplication(DemoApplication.class);
        app.setBanner(new CustomBanner());
        app.run(args);
    }
}
在启动应用时,将会显示 CustomBanner 中的内容。
4、配置 Banner
Spring Boot 允许在 application.properties 文件中设置 Banner 的显示位置和字体颜色。
4.1 设置 Banner 显示模式
可以通过 spring.main.banner-mode 属性来设置 Banner 的显示模式:
spring.main.banner-mode=console
🔹 console:在控制台打印 Banner(默认值)。
🔹 log:将 Banner 打印到日志文件。
🔹 off:禁用 Banner。
4.2 设置字体颜色
要为 Banner 设置颜色,可以通过 ANSI 转义代码自定义字体颜色。例如:
${AnsiColor.RED}Welcome to My Spring Boot App${AnsiColor.DEFAULT}
将这段内容写入 banner.txt,即可在控制台中显示红色的文本。常用颜色代码:
🔹 ${AnsiColor.BLACK}
🔹 ${AnsiColor.RED}
🔹 ${AnsiColor.GREEN}
🔹 ${AnsiColor.YELLOW}
🔹 ${AnsiColor.BLUE}
🔹 ${AnsiColor.MAGENTA}
🔹 ${AnsiColor.CYAN}
🔹 ${AnsiColor.WHITE}
注意: ANSI 颜色在部分控制台中可能不支持。
5、总结
以下是在 Spring Boot 项目中自定义 Banner 的完整操作步骤:
🔹 使用 ASCII Art 定义 Banner:在 src/main/resources/banner.txt 中添加 ASCII Art 内容。
🔹 使用图片作为 Banner:将黑白图片文件(如 banner.png)放置到 src/main/resources 中。
🔹 通过编程方式自定义 Banner:实现 Banner 接口,并在 SpringApplication 中注册。
🔹 在 application.properties 中配置:选择 Banner 显示模式和字体颜色。
通过本文的方法,您可以为 Spring Boot 项目添加一个有趣的、个性化的启动画面,让您的应用更具特色。