# 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進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。