您好,登录后才能下订单哦!
# Spring Boot如何自定义Banner
## 引言
在启动Spring Boot应用时,控制台会默认输出一个由字符组成的"Spring"图案。这个图案被称为**Banner**,是Spring Boot的一个有趣特性。通过自定义Banner,开发者可以展示项目信息、团队Logo或任何个性化内容。本文将详细介绍如何实现自定义Banner的多种方式。
## 一、默认Banner机制
Spring Boot在启动时会按以下顺序查找Banner:
1. 类路径下的`banner.txt`文件
2. 类路径下的`banner.jpg`、`banner.png`或`banner.gif`图片文件
3. 如果都没有找到,则使用默认的Spring Banner
## 二、文本Banner自定义
### 1. 基础文本Banner
在`resources`目录下创建`banner.txt`文件,Spring Boot会自动识别。内容支持:
- 普通文本
- 特殊变量占位符(需用`${}`包裹)
示例:
```text
____ _ ___ ____
/ ___| _ __ __ _| | _____ / _ \/ ___|
\___ \| '_ \ / _` | |/ / _ \| | | \___ \
___) | |_) | (_| | < (_) | |_| |___) |
|____/| .__/ \__,_|_|\_\___/ \___/|____/
|_|
:: 应用名称 :: ${spring.application.name}
:: 版本号 :: @project.version@
:: 启动时间 :: ${application.startup-date}
Spring Boot支持以下预定义变量:
- ${application.version}
- MANIFEST.MF中的版本号
- ${spring-boot.version}
- Spring Boot版本
- ${application.title}
- 应用名称
- ${application.formatted-version}
- 格式化后的版本号
通过AnsiColor和AnsiBackground可设置颜色:
${AnsiColor.BRIGHT_CYAN}
///// ////// // // //////
// // // // // //
///// ////// // // // //
// // // // // //
///// ////// ////// //////
${AnsiColor.DEFAULT}
将图片文件放入resources
目录,支持:
- banner.jpg
- banner.png
- banner.gif
(动态效果)
在application.properties
中配置:
spring.banner.image.width=72 # 字符宽度
spring.banner.image.height=20 # 字符高度
spring.banner.image.invert=false # 反色显示
spring.banner.image.margin=2 # 边距
通过Java代码动态设置Banner:
@SpringBootApplication
public class MyApp {
public static void main(String[] args) {
SpringApplication app = new SpringApplication(MyApp.class);
app.setBanner(new Banner() {
@Override
public void printBanner(Environment environment,
Class<?> sourceClass,
PrintStream out) {
out.println("=== 自定义动态Banner ===");
out.println("当前环境: " +
String.join(",", environment.getActiveProfiles()));
}
});
app.run(args);
}
}
根据不同环境显示不同内容:
<#if spring.profiles.active?contains("dev")>
// 开发环境Banner
<#else>
// 生产环境Banner
</#if>
在application.properties
中:
spring.main.banner-mode=off
或通过代码:
app.setBannerMode(Banner.Mode.OFF);
实现BannerPrinter
接口可完全控制打印逻辑
OS: ${os.name} ${os.version}
CPU: ${os.arch}
JVM: ${java.version} ${java.vendor}
使用在线工具生成: - https://www.bootschool.net/ascii - https://patorjk.com/software/taag
app.addListeners(new ApplicationListener<ApplicationEvent>() {
@Override
public void onApplicationEvent(ApplicationEvent event) {
if(event instanceof ApplicationStartingEvent) {
System.out.print("[");
}
// 其他事件处理...
}
});
自定义Banner是展示项目个性的好方式,合理运用可以: - 增强团队认同感 - 快速识别环境 - 展示关键信息 - 提升开发者体验
建议根据实际项目需求选择合适的实现方式,避免过度设计。完整的Banner配置参考可查看官方文档。 “`
该文档共约1200字,采用Markdown格式编写,包含: 1. 多级标题结构 2. 代码块示例 3. 属性配置片段 4. 外部链接引用 5. 列表和特殊符号使用 可根据需要进一步补充具体案例或截图说明。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。