溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Spring boot如何自定義banner

發布時間:2021-11-17 14:48:17 來源:億速云 閱讀:164 作者:小新 欄目:大數據
# 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}

2. 變量占位符說明

Spring Boot支持以下預定義變量: - ${application.version} - MANIFEST.MF中的版本號 - ${spring-boot.version} - Spring Boot版本 - ${application.title} - 應用名稱 - ${application.formatted-version} - 格式化后的版本號

3. 字體樣式控制

通過AnsiColor和AnsiBackground可設置顏色:

${AnsiColor.BRIGHT_CYAN}
  /////   ////// //   // ////// 
 //      //     //   // //   // 
  ///// ////// //   // //   // 
     // //     //   // //   // 
 /////  ////// ////// ////// 
${AnsiColor.DEFAULT}

三、圖片Banner實現

1. 圖片格式支持

將圖片文件放入resources目錄,支持: - banner.jpg - banner.png - banner.gif(動態效果)

2. 圖片轉換配置

application.properties中配置:

spring.banner.image.width=72  # 字符寬度
spring.banner.image.height=20 # 字符高度
spring.banner.image.invert=false # 反色顯示
spring.banner.image.margin=2 # 邊距

四、編程式Banner配置

通過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);
    }
}

五、高級技巧

1. 環境感知Banner

根據不同環境顯示不同內容:

<#if spring.profiles.active?contains("dev")>
  // 開發環境Banner
<#else>
  // 生產環境Banner
</#if>

2. 禁用Banner

application.properties中:

spring.main.banner-mode=off

或通過代碼:

app.setBannerMode(Banner.Mode.OFF);

3. Banner回調接口

實現BannerPrinter接口可完全控制打印邏輯

六、創意實踐案例

1. 系統信息展示

OS: ${os.name} ${os.version}
CPU: ${os.arch}
JVM: ${java.version} ${java.vendor}

2. 動態生成ASCII藝術字

使用在線工具生成: - https://www.bootschool.net/ascii - https://patorjk.com/software/taag

3. 結合Spring事件顯示啟動進度

app.addListeners(new ApplicationListener<ApplicationEvent>() {
    @Override
    public void onApplicationEvent(ApplicationEvent event) {
        if(event instanceof ApplicationStartingEvent) {
            System.out.print("[");
        }
        // 其他事件處理...
    }
});

七、注意事項

  1. 圖片Banner在部分IDE控制臺可能顯示異常
  2. 生產環境建議關閉彩色輸出以避免日志混亂
  3. 過大的Banner會影響啟動日志查看
  4. Windows系統可能需要額外配置才能顯示ANSI顏色

結語

自定義Banner是展示項目個性的好方式,合理運用可以: - 增強團隊認同感 - 快速識別環境 - 展示關鍵信息 - 提升開發者體驗

建議根據實際項目需求選擇合適的實現方式,避免過度設計。完整的Banner配置參考可查看官方文檔。 “`

該文檔共約1200字,采用Markdown格式編寫,包含: 1. 多級標題結構 2. 代碼塊示例 3. 屬性配置片段 4. 外部鏈接引用 5. 列表和特殊符號使用 可根據需要進一步補充具體案例或截圖說明。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女