源本科技 | 码上会

Spring Boot Banner

2026/04/01
3
0

什么是 Banner

Spring Boot 应用启动时,控制台顶部默认打印的ASCII 艺术字符画 / 文本横幅,就是 Banner。

  • 核心作用:个性化标识应用、展示版本信息、启动状态可视化;

  • 默认来源:Spring Boot 内置的固定字符画 + 框架版本号;

  • 支持格式:Spring Boot 3.x 仅支持文本文件(.txt),Spring Boot 2.x 额外支持图片转字符画。


默认规则

Spring Boot 启动时会自动扫描以下位置的 Banner 文件(优先级从高到低):

  1. 配置文件指定的自定义路径

  2. classpath 下的 banner.txt(文本)

  3. Spring Boot 内置默认 Banner

如果未自定义,会直接打印框架自带的默认横幅。


自定义文本 Banner

最简自定义方式

无需任何代码配置,直接在项目 resources 根目录(classpath 根目录)新建文件:banner.txt,文件内容就是自定义的 Banner。

可在 banner.txt 中直接使用环境变量占位符,自动读取应用 / 框架配置,官方支持的变量如下:

占位符

说明

${application.version}

应用版本号(取自 pom.xml/build.gradleversion

${application.formatted-version}

格式化版本号(带前缀 v+ 括号,如 (v1.0.0)

${spring-boot.version}

Spring Boot 框架版本号

${spring-boot.formatted-version}

格式化框架版本号

${application.title}

应用名称(取自构建文件的 name

${AnsiColor.NAME}

控制台彩色输出(如 RED、GREEN、BLUE)

关闭 Banner

实际生产中常需要关闭 Banner 减少控制台输出,三种常用方式

方式1:配置文件关闭

spring:
  main:
    banner-mode: off # 可选值:off(关闭)、console(控制台)、log(日志文件)

方式2:启动类代码关闭

@SpringBootApplication
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication app = new SpringApplication(DemoApplication.class);
        // 关闭 Banner
        app.setBannerMode(Banner.Mode.OFF);
        app.run(args);
    }
}

方式3:日志级别关闭

将 Spring Boot 启动日志级别设为 OFF,间接隐藏 Banner。


编程式自定义 Banner

除了文件配置,还可以实现 Banner 接口,通过代码动态生成 Banner,适合需要动态逻辑的场景。

  1. 自定义 Banner 类:

import org.springframework.boot.Banner;
import org.springframework.boot.ansi.AnsiColor;
import org.springframework.boot.ansi.AnsiOutput;
import org.springframework.core.env.Environment;
import java.io.PrintStream;

public class MyCustomBanner implements Banner {
    @Override
    public void printBanner(Environment environment, Class<?> sourceClass, PrintStream out) {
        // 彩色输出
        AnsiOutput.setEnabled(AnsiOutput.Enabled.ALWAYS);
        out.println(AnsiColor.BRIGHT_GREEN + "========================");
        out.println(AnsiColor.BRIGHT_BLUE + "  自定义动态 Banner");
        out.println(AnsiColor.BRIGHT_GREEN + "========================");
    }
}
  1. 启动类注册:

@SpringBootApplication
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication app = new SpringApplication(DemoApplication.class);
        // 注册自定义 Banner
        app.setBanner(new MyCustomBanner());
        app.run(args);
    }
}

解决 Banner 乱码

banner.txt 出现中文乱码,两步解决:

  1. IDE 设置文件编码:Settings -> Editor -> File Encodings,将 Properties Files 编码设为 UTF-8

  2. 配置文件指定编码:

spring:
  banner:
    charset: UTF-8

无需手动敲字符画,一键生成专业 ASCII 艺术字:

https://www.bootschool.net/asciihttps://patorjk.com/software/taag/https://asciiart.website/