1. 简介

Spring Boot 是构建 Java Web 应用的利器,但它的某些默认行为并不总是符合所有人的预期。

其中一个典型例子就是启动时打印的 Spring Boot Banner:

spring boot banner 1

虽然这个 Banner 本身无害,但在某些场景下我们可能希望关闭它 ✅:

  • 避免干扰自定义日志格式
  • 减少远程日志采集系统的冗余输出(节省带宽)
  • 在生产环境中显得更“干净”

本文将介绍几种在启动时禁用 Spring Boot Banner 的方法,适用于不同使用场景,你可以根据项目实际情况灵活选择。

2. 通过配置文件禁用(推荐)

这是最推荐的方式,✅ 无需修改代码、✅ 可动态调整、✅ 易于回滚。

application.properties

spring.main.banner-mode=off

application.yml

spring:
  main:
    banner-mode: "off"

环境变量(适合容器化部署)

SPRING_MAIN_BANNER-MODE=off

⚠️ 注意:环境变量命名遵循 Spring Boot 的规则 —— 将属性名转为大写,. 替换为 _- 保留。

这种方式特别适合微服务架构或 Kubernetes 部署场景,可以在不改代码的前提下统一控制所有服务的 Banner 行为。

3. 通过代码禁用

如果你更倾向于硬编码控制,也可以在启动类中通过代码关闭 Banner。但这种方式 ❌ 缺乏灵活性,每个服务都要改代码,上线后也不易调整。

使用 SpringApplicationBuilder

new SpringApplicationBuilder(MyApplication.class)
    .bannerMode(Banner.Mode.OFF)
    .run(args);

使用 SpringApplication

SpringApplication app = new SpringApplication(MyApplication.class);
app.setBannerMode(Banner.Mode.OFF);
app.run(args);

✅ 适用场景:

  • 脚手架项目(统一模板)
  • 内部工具类服务,不需要灵活配置

❌ 踩坑提醒:
别忘了导入 org.springframework.boot.Banner,否则 IDE 可能自动导入错的类导致编译失败。

4. 通过 IDE 设置禁用(开发环境专用)

开发阶段最简单粗暴的方式 —— 直接在 IDE 里点一下。

以 IntelliJ IDEA 为例,在 Spring Boot 启动配置中勾选即可:

disable spring boot banner intellij

✅ 优点:

  • 零配置,一键关闭
  • 不影响生产环境

⚠️ 注意:
这只是本地运行时生效,打包后的 jar 依然会显示 Banner,所以不能替代配置方式。

5. 替换为空的 Banner 文件

还有一种“曲线救国”的方式:把 Banner 换成一个空文件。

配置指定文件位置

application.properties

spring.banner.location=classpath:/banner.txt

application.yml

spring:
  banner:
    location: classpath:/banner.txt

然后在 src/main/resources/ 下创建一个空的 banner.txt 文件。

✅ 原理:
Spring Boot 会优先加载自定义位置的 Banner 文件,既然文件是空的,自然就不会输出内容。

⚠️ 踩坑提醒:

  • 确保文件路径正确,且被正确打包进 jar
  • 文件不能有 BOM 头,否则可能输出乱码或空行

6. 总结

方法 是否推荐 适用场景
配置文件(banner-mode=off ✅ 强烈推荐 所有环境,尤其是生产
环境变量 ✅ 推荐 容器化、K8s 部署
代码设置 ⚠️ 一般 固定行为的服务
IDE 设置 ✅ 推荐(仅开发) 本地调试
空 banner.txt ⚠️ 可用但不优雅 已有自定义 Banner 的项目

首选方案:使用 spring.main.banner-mode=off + 环境变量控制,兼顾灵活性与可维护性。

如果你还想自定义 Banner 内容(比如打印服务名、版本号),那可以另起一篇文章聊聊 banner.txt 的高级玩法。


原始标题:Disable Spring Boot Banner at Startup