在开发 Spring Boot 项目时,你是否厌倦了千篇一律的启动画面?其实,Spring Boot 提供了一个非常实用的功能 —— banner.txt,它允许我们自定义应用启动时显示的文字和图片。无论你是想展示团队文化、区分环境,还是仅仅为了好看,banner.txt 都是一个非常有趣又实用的小功能。
官方文档参考:Spring Boot Reference Guide
1. 什么是 banner.txt?
banner.txt 是 Spring Boot 项目中的一个特殊文本文件,用于自定义应用启动时显示的欢迎信息或标识。默认情况下,Spring Boot 会显示如下字样:
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.6.13)
而通过自定义 banner.txt 文件,你可以将这段文字替换成任何你喜欢的内容,甚至可以是一张 ASCII 艺术图或动态变量信息!
2. 如何创建 banner.txt 文件?
1. 创建 banner 文件(支持自定义名称)
你可以选择在 src/main/resources/ 目录下创建任意名称的文本文件,例如:
- banner.txt(默认识别)
- my-banner.txt
- banner-dev.txt
- banner-prod.txt
如果你使用非默认名称,只需在配置中指定该文件路径即可。如 banner 文件名为 my-banner.txt ,则 application.yaml 配置如下:
spring:
banner:
location: my-banner.txt
2. 添加内容
你可以直接粘贴一段 ASCII 文字进去。例如:
.--. .--. .-''-. .-''-. .-------. .-'''-. .-./`) _____ __ .-./`) ____ __ .-./`) ,---. .--. .-_'''-.
| | _/ / .'_ _ \ .'_ _ \ | _ _ \ / _ \\ .-.')\ _\ / /\ .-.') \ \ / /\ .-.')| \ | | '_( )_ \
| (`' ) / / ( ` ) ' / ( ` ) '| ( ' ) | (`' )/`--'/ `-' \.-./ ). / ' / `-' \ \ _. / ' / `-' \| , \ | ||(_ o _)| '
|(_ ()_) . (_ o _) |. (_ o _) ||(_ o _) / (_ o _). `-'`"`\ '_ .') .' `-'`"` _( )_ .' `-'`"`| |\_ \| |. (_,_)/___|
| (_,_) __ | (_,_)___|| (_,_)___|| (_,_).' __ (_,_). '. .---.(_ (_) _) ' .---. ___(_ o _)' .---. | _( )_\ || | .-----.
| |\ \ | |' \ .---.' \ .---.| |\ \ | |.---. \ : | | / \ \ | || |(_,_)' | | | (_ o _) |' \ '- .'
| | \ `' / \ `-' / \ `-' /| | \ `' /\ `-' | | | `-'`-' \ | || `-' / | | | (_,_)\ | \ `-'` |
| | \ / \ / \ / | | \ / \ / | | / / \ \ | | \ / | | | | | | \ /
`--' `'-' `'-..-' `'-..-' ''-' `'-' `-...-' '---''--' '----''---' `-..-' '---' '--' '--' `'-...-'
✅ 小提示:
可以使用在线工具 Text to ASCII Art Generator (TAAG) 或 FIGlet - hosted by PLiG 等网站生成你想要的字体样式。
注意:
1. 如果文件的编码不是UTF-8,则可以设置 spring.banner.charset 。
3. 动态变量注入
Spring Boot 支持在 banner.txt 中插入一些动态变量,比如版本号等。
支持的变量包括:
变量名 | 说明 |
${application.version} | 应用程序的版本号,取自 MANIFEST.MF 文件中的声明。例如:Implementation-Version: 1.0 将显示为 1.0。 |
${application.formatted-version} | 应用程序的版本号,取自 MANIFEST.MF,并以格式化方式显示(加上前缀 v 和括号)。例如:v1.0。 |
${spring-boot.version} | 当前使用的 Spring Boot 版本号。例如:2.1.0.RELEASE。 |
${spring-boot.formatted-version} | 当前使用的 Spring Boot 版本号,以格式化方式显示(加上前缀 v 和括号)。例如:v2.1.0.RELEASE。 |
${Ansi.NAME}(或 ${AnsiColor.NAME}、${AnsiBackground.NAME}、${AnsiStyle.NAME}) | ANSI 转义码名称,用于设置文字颜色、背景色或样式。具体可选值请参考 AnsiPropertySource 类。例如:${AnsiColor.RED} 表示红色文字。 |
${application.title} | 应用程序的标题,取自 MANIFEST.MF 文件中的声明。例如:Implementation-Title: MyApp 将显示为 MyApp。 |
示例:
.--. .--. .-''-. .-''-. .-------. .-'''-. .-./`) _____ __ .-./`) ____ __ .-./`) ,---. .--. .-_'''-.
| | _/ / .'_ _ \ .'_ _ \ | _ _ \ / _ \\ .-.')\ _\ / /\ .-.') \ \ / /\ .-.')| \ | | '_( )_ \
| (`' ) / / ( ` ) ' / ( ` ) '| ( ' ) | (`' )/`--'/ `-' \.-./ ). / ' / `-' \ \ _. / ' / `-' \| , \ | ||(_ o _)| '
|(_ ()_) . (_ o _) |. (_ o _) ||(_ o _) / (_ o _). `-'`"`\ '_ .') .' `-'`"` _( )_ .' `-'`"`| |\_ \| |. (_,_)/___|
| (_,_) __ | (_,_)___|| (_,_)___|| (_,_).' __ (_,_). '. .---.(_ (_) _) ' .---. ___(_ o _)' .---. | _( )_\ || | .-----.
| |\ \ | |' \ .---.' \ .---.| |\ \ | |.---. \ : | | / \ \ | || |(_,_)' | | | (_ o _) |' \ '- .'
| | \ `' / \ `-' / \ `-' /| | \ `' /\ `-' | | | `-'`-' \ | || `-' / | | | (_,_)\ | \ `-'` |
| | \ / \ / \ / | | \ / \ / | | / / \ \ | | \ / | | | | | | \ /
`--' `'-' `'-..-' `'-..-' ''-' `'-' `-...-' '---''--' '----''---' `-..-' '---' '--' '--' `'-...-'
${AnsiColor.RED}Spring Boot Version: ${spring-boot.version}${AnsiColor.DEFAULT}
4. 用图片作为 Banner
除了文字,Spring Boot 还支持使用图片来作为启动 Banner。它会将图片转换为 ASCII 字符进行显示。
1. 图片准备
将图片文件放在 src/main/resources/ 目录下,Spring Boot 会自动读取并转换为 ASCII 字符显示在启动日志中。
Spring Boot 会自动识别以下文件名作为 banner 图片,无需额外配置:
- banner.gif
- banner.jpg
- banner.png
如果你使用了非默认文件名或格式(如 logo.jpg, app-banner.gif),你需要在 application.yml 中手动指定路径:
spring:
banner:
image:
location: classpath:images/app-banner.jpg
width: 30 # 设置字符宽度(推荐不超过终端宽度)
height: 10 # 设置字符高度
invert: false # 是否反色显示(适合浅色背景)
说明:
1. 文本 banner 与图片 banner 可共存。
你完全可以在项目中同时保留:
- banner.txt:用于显示文字内容(如版本号、颜色样式等)
- banner.png:用于显示图片 logo 或图形标识
此时 Spring Boot 会优先显示图片 banner,然后再显示文本 banner。
2. banner.png、banner.gif、banner.jpg 同时存在,如果在 application.yml 中未指定,则按 banner.gif > banner.jpg > banner.png。
2. 启动查看效果
以该图为例:
最终打印效果如图所示:
5. 禁用 banner
在某些生产或审计环境中,可能需要隐藏 banner 输出。可以通过以下方式实现:
方法 1:Java 代码设置
import org.springframework.boot.Banner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class BannerDemoApplication {
public static void main(String[] args) {
SpringApplication app = new SpringApplication(BannerDemoApplication.class);
app.setBannerMode(Banner.Mode.OFF);
app.run(args);
}
}
该方式容易被 application.yaml 的配置覆盖。
方法 2:配置文件设置
spring:
main:
banner-mode: OFF