天天看點

Spring Boot 自定義啟動畫面

作者:Java架構學習指南

我們啟動項目之後,會在控制台上看到類似下面的畫面:

Spring Boot 自定義啟動畫面

呀呀呀~ 看不懂這是啥圖案啊~

那麼,我們是否可以自定義呢?

肯定可以

自定 Banner

上面的截圖資訊就是 Banner 資訊,我們可以在項目的 resources 下建立 banner.txt 來實作,比如:

// banner.txt
Jimmy           

然後我們重新啟動項目,則有:

Spring Boot 自定義啟動畫面

擷取屬性

當然,我們可以擷取項目的屬性,通過 ${屬性名} 來擷取,比如:

${spring-boot.version}           

擷取的屬性可以有:

  • AnsiColor.BRIGHT_RED: 設定控制台中輸出内容的顔色,具體參考 org.springframework.boot.ansi.AnsiColor
  • application.version: 用來擷取 MANIFEST.MF 檔案的版本資訊
  • application.formatted-version: 格式化後的 application.version 版本資訊
  • spring-boot.version: Spring Boot 的版本号
  • spring-boot.formatted-version: 格式化後的 sprin-boot.version 版本資訊

設定顔色

剛才我們提到了 AnsiColor 可以設定控制台輸出内容的顔色。那麼,我們應該如何設定呢?

這很簡單,隻需要在這段文本前面加入 ${AnsiColor.BRIGHT_RED} 即可。添加的枚舉類型顔色根據個人喜好更改~

// 枚舉值
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//

package org.springframework.boot.ansi;

public enum AnsiColor implements AnsiElement {
    DEFAULT("39"),
    BLACK("30"),
    RED("31"),
    GREEN("32"),
    YELLOW("33"),
    BLUE("34"),
    MAGENTA("35"),
    CYAN("36"),
    WHITE("37"),
    BRIGHT_BLACK("90"),
    BRIGHT_RED("91"),
    BRIGHT_GREEN("92"),
    BRIGHT_YELLOW("93"),
    BRIGHT_BLUE("94"),
    BRIGHT_MAGENTA("95"),
    BRIGHT_CYAN("96"),
    BRIGHT_WHITE("97");

    private final String code;

    private AnsiColor(String code) {
        this.code = code;
    }

    public String toString() {
        return this.code;
    }
}           

實操

OK,我們了解得差不多了,來實操一下。通過 Text to ASCII Art Generator 擷取生成的藝術字。

然後在 banner.txt 上添加文本如下:

啟動成功!
${AnsiColor.BRIGHT_RED}
       _ _
      | (_)
      | |_ _ __ ___  _ __ ___  _   _
  _   | | | '_ ` _ | '_ ` _ | | | |
 | |__| | | | | | | | | | | | | |_| |
  ____/|_|_| |_| |_|_| |_| |_|__, |
                                __/ |
                               |___/

${AnsiColor.BRIGHT_WHITE}
歡迎使用~
spring boot 版本為 ${spring-boot.version}           

我們重新運作下項目,效果如下:

Spring Boot 自定義啟動畫面

關閉 Banner

我們不想使用 Banner,那麼,我們在入口檔案中進行關閉即可。

PS,我這裡使用的 spring boot 版本為 3.1.2

原先入口檔案:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class LaunchApplication {

    public static void main(String[] args) {
        SpringApplication.run(LaunchApplication.class, args);
    }

}           

上面代碼其實可以寫成這樣:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class LaunchApplication {

    public static void main(String[] args) {
        SpringApplication app = new SpringApplication(LaunchApplication.class);
        app.run(args);
    }

}           

我們添加一行代碼禁用 banner.txt,更改後:

import org.springframework.boot.Banner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class LaunchApplication {

    public static void main(String[] args) {
        SpringApplication app = new SpringApplication(LaunchApplication.class);
        app.setBannerMode(Banner.Mode.OFF); // 設定 Banner 模式為關閉
        app.run(args);
    }

}           

啟動後,控制台就沒有相關的 banner 資訊了:

Spring Boot 自定義啟動畫面

繼續閱讀