spring boot自定义banner有文本、图片、编程三种方式:①用banner.txt显示ascii图案;②用banner.gif/jpg/png转ascii;③实现banner接口动态生成。

Spring Boot 配置自定义 Banner 启动图标有多种方式,按使用频率和复杂度从低到高,主要有文本、图片、编程三种路径。核心逻辑是:Spring Boot 启动时会按固定优先级查找 banner 资源,找到即用,未找到则回退到默认。
用 banner.txt 显示 ASCII 图案
这是最常用、零代码的方式:
- 在 src/main/resources 目录下新建文件 banner.txt
- 内容可纯文本,也支持 ANSI 颜色和样式占位符,例如:
${AnsiColor.GREEN}█████${AnsiColor.RED}██${AnsiColor.RESET} - 推荐用在线工具生成艺术字:patorjk.com/software/taag(英文友好)或 network-science.de/ascii(支持中文)
- 注意文件编码必须为 UTF-8(无 BOM),否则可能乱码或报错
用图片生成动态 Banner
Spring Boot 支持将图片自动转为 ASCII 艺术字输出:
- 把图片(banner.gif / banner.jpg / banner.png)放在 src/main/resources 下
- 优先级顺序为:banner.gif > banner.jpg > banner.png,同目录下只取第一个匹配项
- 可在 application.properties 中微调渲染效果:
spring.banner.image.width=76spring.banner.image.height=24spring.banner.image.invert=true(反色,适合深色终端) - 图片建议使用黑白或高对比度图,灰度图效果更稳定
通过配置关闭或切换输出位置
不一定要显示,也可以按需控制行为:
- 关闭 Banner:
spring.main.banner-mode=off(application.properties) - 仅输出到日志(不刷屏):
spring.main.banner-mode=log - 指定非默认 banner 文件路径:
spring.banner.location=classpath:my-banner.txt或spring.banner.location=classpath:logo.png
用 Java 代码完全接管 Banner
适合需要运行时动态生成(如带环境变量、版本号、IP 地址等)的场景:
- 实现 Banner 接口,重写
printBanner()方法 - 启动类中注入:
SpringApplication app = new SpringApplication(App.class);app.setBanner(new MyCustomBanner());app.run(args); - 也可用 SpringApplicationBuilder 链式设置:
new SpringApplicationBuilder(App.class).banner(new MyBanner()).run(args);











