Spring Boot(三) 自定义Banner篇
在 Spring Boot 项目中,当应用启动时会显示默认的 Spring 标志和版本信息。定制化的启动 Banner 不仅可以美化应用,还能在项目中增加个性化的品牌印记,甚至可以提供一些关键信息。本文将介绍如何在 Spring Boot 项目中自定义启动 Banner,以及如何使用工具生成自定义文本和图像 Banner。
一、Spring Boot 默认 Banner
Spring Boot 默认的 Banner 位于 org/springframework/boot 包内的 spring-boot.jar 中。默认 Banner 只显示了 Spring 标志、版本和应用名称信息,效果如下:
二、自定义Banner配置方式
Spring Boot 支持三种方式来定制 Banner:
文本文件(ASCII Art):通过 banner.txt 文件设置 ASCII Art。 图片文件:通过 banner.jpg、banner.png 或 banner.gif 设置图片。 编程方式:通过编写 Java 代码自定义 Banner。
1. 文本 Banner 配置
在 resources
目录下创建 banner.txt
文件,Spring Boot 启动时会自动读取该文件内容作为 Banner 输出。
步骤一:在resources目录下创建文件banner.txt文件,文件内容为 ceshi banner
步骤二:启动项目,查看效果图
步骤三:美化自定义banner.txt
一般情况下,我们会借助第三方工具帮忙转化内容,如网站http://www.network-science.de/ascii/
将文字转化成字符串,网站:http://www.degraeve.com/img2txt.php
可以将图片转化成字符串。
复制上面的转换结果到banner.txt里,启动项目查看效果
- 若需自定义文件名或路径,可通过配置
spring.banner.location=classpath:自定义路径/文件名
指定。 - 支持 ANSI 转义码实现彩色输出,例如:
${AnsiColor.BRIGHT_CYAN}
。
2. 图片 Banner 配置
Spring Boot 支持使用图片作为 Banner。图片文件的格式可以是 PNG、GIF 或 JPG,系统会在启动时将图片渲染成 ASCII 格式。具体支持的图片格式为黑白图像。
步骤一:将 banner.png、banner.jpg 或 banner.gif 图片文件放在 src/main/resources 中。
步骤二:启动项目,Spring Boot 会自动加载并显示图片的 ASCII 版本。
- 支持 GIF/JPG 格式图片,通过配置
spring.banner.image.location=classpath:图片路径
指定。 - 图片会被转换为 ASCII 字符输出,但需注意部分 IDE 控制台可能不支持显示。
- 图片生成推荐工具 可以使用 Image to ASCII 这类工具生成黑白图片,将其导出为 PNG 或 JPG 格式,并命名为 banner.png。
3.通过编程方式自定义 Banner
如果希望在启动过程中动态设置 Banner,还可以通过 Java 代码实现。实现 Banner 接口来自定义 Banner,并将其注册到 Spring Boot 应用中。
创建一个实现 org.springframework.boot.Banner 接口的类:
package com.w3cjava.common.banner;
import org.springframework.boot.Banner;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Component;
import java.io.PrintStream;
@Component
public class CustomBanner implements Banner {
@Override
public void printBanner(Environment environment, Class<?> sourceClass, PrintStream out) {
out.println("=================================");
out.println(" Welcome to My Spring Boot App ");
out.println("=================================");
}
}
在 SpringApplication 中设置自定义 Banner:
@SpringBootApplication
public class SpringBootBannerApplication {
public static void main(String[] args) {
SpringApplication app = new SpringApplication(SpringBootBannerApplication.class);
// 配置自定义的Banner类
app.setBanner(new CustomBanner());
app.run(args);
}
}
效果:
- 通过编码自定义banner时,需要将resources下的banner.txt文本形式和banner.png图片形式删除或者改名称
三、配置Banner样式
Spring Boot 允许在 application.properties 文件中设置 Banner 的显示位置和字体颜色。
1.设置 Banner 显示模式
可以通过 spring.main.banner-mode 属性来设置 Banner 的显示模式:
spring:
main:
banner-mode: console
- console:在控制台打印 Banner(默认值)。
- log:将 Banner 打印到日志文件。
- off:禁用 Banner。
2.设置字体颜色
要为 Banner 设置颜色,可以通过 ANSI 转义代码自定义字体颜色。例如:
${AnsiColor.RED}Welcome to My Spring Boot App${AnsiColor.DEFAULT}
将这段内容写入 banner.txt,即可在控制台中显示红色的文本。
效果:
常用颜色代码:
${AnsiColor.BLACK}
${AnsiColor.RED}
${AnsiColor.GREEN}
${AnsiColor.YELLOW}
${AnsiColor.BLUE}
${AnsiColor.MAGENTA}
${AnsiColor.CYAN}
${AnsiColor.WHITE}
注意: ANSI 颜色在部分控制台中可能不支持。
四、动态内容注入
- 内置变量 Banner 内容支持通过
${application.version}
、${spring-boot.version}
等占位符注入应用版本、Spring Boot 版本等动态信息。 - 自定义变量 可在
application.properties
中定义变量(如custom.info=Demo
),通过${custom.info}
在 Banner 中引用。
五、生成工具与优化
- 艺术字生成 推荐使用 patorjk.com/taag 等在线工具生成 ASCII 艺术字,直接粘贴至
banner.txt
实现个性化效果5。 - 关闭 Banner 配置
spring.main.banner-mode=off
可完全禁用 Banner 输出。
六、加载优先级与源码逻辑
- 加载顺序 Spring Boot 优先检查
spring.banner.location
配置的路径,若未配置则默认加载banner.txt
;同时支持图片与文本 Banner 共存,但默认仅输出文本。 - 源码关键点 启动流程中通过
SpringApplicationBannerPrinter
类处理 Banner 打印逻辑,依次调用ResourceBanner
(文本)和ImageBanner
(图片)。
七、示例配置
spring:
banner:
location: classpath:banner/mycustom.txt
image:
location: classpath:images/logo.jpg
main:
banner-mode: console # 可选值:console/log/off
八、总结
通过文本/图片配置、动态变量注入及工具生成,可快速实现个性化 Banner,兼顾品牌展示与关键信息输出。优先级控制和源码逻辑(如 ResourceBanner
的加载机制)为深度定制提供了扩展空间