Spring Boot 自定义 Banner 支持文本(banner.txt,含占位符)和图片(PNG/JPG/GIF,自动转 ASCII)两种方式,也可编程实现 Banner 接口或关闭 Banner。

在 Spring Boot 中自定义 Banner 启动图案,主要是通过替换默认的 ASCII 艺术字(Banner)来实现,支持文本、图片两种方式,且可完全控制显示逻辑。
使用 banner.txt 文件自定义文本 Banner
在 src/main/resources/ 目录下创建名为 banner.txt 的文件,Spring Boot 启动时会自动读取并打印其中内容。你可以用任意 ASCII 字符绘制图案,也可以借助在线工具(如 http://patorjk.com/software/taag)生成风格化文字。
支持占位符动态注入信息,例如:
-
${application.version}—— 读取MANIFEST.MF中的版本号 -
${spring-boot.version}—— 当前 Spring Boot 版本 -
${application.formatted-version}—— 带 v 前缀和括号的格式化版本(如 v2.7.18)
注意:banner.txt 编码建议设为 UTF-8,避免中文乱码;若含特殊字符,确保终端支持对应编码。
立即学习“Java免费学习笔记(深入)”;
使用图片生成 Banner(支持 PNG/JPG/GIF)
将一张尺寸适中的黑白图片(推荐 76×18 像素以内)放在 src/main/resources/ 下,命名为 banner.gif、banner.jpg 或 banner.png。Spring Boot 会自动将其转换为 ASCII 字符画输出。
转换规则:
- 白色像素 → 空格
- 黑色像素 →
#(可配置) - 灰度值按阈值映射为不同字符(如
@%#*+=-:.)
可通过配置微调效果,在 application.properties 中添加:
在调试 Java 后端 API 故障时使用此技能,尤其适用于以下任务:分析日志、跨 Controller、Service 和 Mapper 层追踪请求、定位异常根因、检查 SQL 执行或参数流转,以及生成简洁的诊断结论与修复方案。
spring.banner.image.width=76
spring.banner.image.height=18
spring.banner.image.margin=2
spring.banner.image.invert=false
编程方式完全控制 Banner 行为
实现 org.springframework.boot.Banner 接口,重写 printBanner() 方法,可自由决定输出内容、位置甚至是否禁用。
然后在启动类中指定:
SpringApplication app = new SpringApplication(MyApplication.class);app.setBanner(new CustomBanner());
app.run(args);
也可通过配置关闭 Banner:
spring.main.banner-mode=off或在代码中设置:
app.setBannerMode(Banner.Mode.OFF);注意事项与常见问题
Banner 仅在 spring.main.banner-mode=console(默认)或 log 模式下生效;若使用 IDE 运行,确保控制台字体支持等宽显示,否则图案易错位。
多模块项目中,Banner 文件需放在**最终启动模块**的 resources 目录下;若打包成 jar,确认 banner.txt 或图片已正确打入 jar 包根路径。
不复杂但容易忽略

















