一、自定義 Spring Boot 啓動橫幅 banner.txt
1、什麼是 banner.txt?
當你啓動 Spring Boot 應用時,控制枱會打印出一個默認的 Spring Boot Banner(比如啓動 LOGO)。這個內容來自 resources 目錄下的 banner.txt 文件。你可以通過這個文件自定義你想展示的 ASCII 圖案、版本號、提示文字等。
2、創建或修改 banner.txt
2.1、文件位置:
在你的 Spring Boot 項目中,進入 src/main/resources 目錄下,新建或編輯:
src/main/resources/banner.txt
2.2. 內容示例(純色風格 + 啓動信息):
===========================================
== AbsWeb 啓動成功! 🚀 ==
== 端口:${server.port} ==
== 環境:${spring.profiles.active} ==
== 時間:${date} ==
===========================================
你可以使用 Spring Boot 提供的一些佔位符變量:
| 佔位符 | 描述 |
|---|---|
${application.version} |
項目的 MANIFEST.MF 版本 |
${application.formatted-version} |
格式化版本號 |
${spring-boot.version} |
Spring Boot 版本 |
${server.port} |
當前端口號 |
${spring.profiles.active} |
當前激活的配置環境 |
${date} |
啓動時間 |
${AnsiColor.NAME} |
控制枱顏色(如 GREEN、RED) |
3、加點顏色和風格(可選)
Spring Boot 支持 ANSI 顏色,在支持的終端中會顯示彩色效果:
${AnsiColor.BRIGHT_CYAN}
===========================================
== AbsWeb 啓動成功! 🚀 ==
== 端口:${server.port} ==
== 環境:${spring.profiles.active} ==
== 時間:${date} ==
===========================================
${AnsiColor.DEFAULT}
4、啓動測試
啓動項目時,你會看到類似輸出:
===========================================
== AbsWeb 啓動成功! 🚀 ==
== 端口:8082 ==
== 環境:test ==
== 時間:2025-06-13 16:52:10 ==
===========================================
提供幾個網站可以自己去生成圖案:
二、進階方式:關閉默認 Banner,自定義 Java 啓動內容
1、禁用 Spring Boot 的默認 banner:
在你的配置文件(如 application.yml 或 application.properties)中添加:
yml 文件:
spring:
main:
banner-mode: "off"
properties 文件:
spring.main.banner-mode=off
2、自定義啓動打印代碼
在主啓動類中添加一個打印方法,利用 ANSI 轉義碼輸出彩色字符:
public class AbsWebApplication {
private static final String RESET = "\u001B[0m";
private static final String CYAN = "\u001B[36m";
private static final String BLUE = "\u001B[34m";
private static final String PURPLE = "\u001B[35m";
private static final String WHITE = "\u001B[37m";
public static void main(String[] args) {
SpringApplication.run(AbsWebApplication.class, args);
printBanner();
}
private static void printBanner() {
System.out.println();
System.out.println(CYAN + "╔════════════════════════════════════════════╗" + RESET);
System.out.println(CYAN + "║" + BLUE + " █████╗ ██████╗ ███████╗ ██████╗ ██╗ ██╗ " + CYAN + "║" + RESET);
System.out.println(CYAN + "║" + BLUE + " ██╔══██╗██╔══██╗██╔════╝██╔═══██╗██║ ██╔╝ " + CYAN + "║" + RESET);
System.out.println(CYAN + "║" + BLUE + " ███████║██████╔╝█████╗ ██║ ██║█████╔╝ " + CYAN + "║" + RESET);
System.out.println(CYAN + "║" + BLUE + " ██╔══██║██╔═══╝ ██╔══╝ ██║ ██║██╔═██╗ " + CYAN + "║" + RESET);
System.out.println(CYAN + "║" + BLUE + " ██║ ██║██║ ███████╗╚██████╔╝██║ ██╗ " + CYAN + "║" + RESET);
System.out.println(CYAN + "║" + BLUE + " ╚═╝ ╚═╝╚═╝ ╚══════╝ ╚═════╝ ╚═╝ ╚═╝ " + CYAN + "║" + RESET);
System.out.println(CYAN + "║ ║" + RESET);
System.out.println(CYAN + "║ " + WHITE + ">>> AbsWeb Application 啓動成功 <<<" + CYAN + " ║" + RESET);
System.out.println(CYAN + "║ " + PURPLE + "版本: v2.6.13 時間: " + WHITE + java.time.LocalTime.now() + CYAN + " ║" + RESET);
System.out.println(CYAN + "╚════════════════════════════════════════════╝" + RESET);
System.out.println();
}
}
輸出結果如下:
下面多提供幾個圖案:
public class AbsWebApplication {
private static final String RESET = "\u001B[0m";
private static final String CYAN = "\u001B[36m";
private static final String MAGENTA = "\u001B[35m";
private static final String BLUE = "\u001B[34m";
private static final String YELLOW = "\u001B[33m";
public static void main(String[] args) {
SpringApplication.run(AbsWebApplication.class, args);
printBanner();
}
private static void printBanner() {
System.out.println();
System.out.println(MAGENTA + "╔══════════════════════════════════════════════════╗" + RESET);
System.out.println(MAGENTA + "║ ║" + RESET);
System.out.println(MAGENTA + "║ " + CYAN + "██████╗ █████╗ ██████╗ ██████╗ ██╗ ██╗ " + MAGENTA + "║" + RESET);
System.out.println(MAGENTA + "║ " + CYAN + "██╔══██╗██╔══██╗██╔══██╗██╔═══██╗██║ ██╔╝ " + MAGENTA + "║" + RESET);
System.out.println(MAGENTA + "║ " + BLUE + "██████╔╝███████║██████╔╝██║ ██║██║ ██╔╝ " + MAGENTA + "║" + RESET);
System.out.println(MAGENTA + "║ " + BLUE + "██╔═══╝ ██╔══██║██╔═══╝ ██║ ██║██║ ╚═╝ " + MAGENTA + "║" + RESET);
System.out.println(MAGENTA + "║ " + YELLOW + "██║ ██║ ██║██║ ╚██████╔╝███████╗ " + MAGENTA + "║" + RESET);
System.out.println(MAGENTA + "║ " + YELLOW + "╚═╝ ╚═╝ ╚═╝╚═╝ ╚═════╝ ╚══════╝ " + MAGENTA + "║" + RESET);
System.out.println(MAGENTA + "║ ║" + RESET);
System.out.println(MAGENTA + "║ " + CYAN + ">>> AbsWeb Application 啓動成功 <<< " + MAGENTA + "║" + RESET);
System.out.println(MAGENTA + "║ " + CYAN + "版本: v2.6.13 時間: " + java.time.LocalTime.now() + " " + MAGENTA + "║" + RESET);
System.out.println(MAGENTA + "║ ║" + RESET);
System.out.println(MAGENTA + "╚══════════════════════════════════════════════════╝" + RESET);
System.out.println();
}
}
public class AbsWebApplication {
private static final String RESET = "\u001B[0m";
private static final String RED = "\u001B[31m";
private static final String GREEN = "\u001B[32m";
private static final String BLUE = "\u001B[34m";
private static final String PURPLE = "\u001B[35m";
private static final String YELLOW = "\u001B[33m";
public static void main(String[] args) {
SpringApplication.run(AbsWebApplication.class, args);
printBanner();
}
private static void printBanner() {
System.out.println();
System.out.println(PURPLE + "╔══════════════════════════╗" + RESET);
System.out.println(PURPLE + "║ " + RED + "▂▃▅▇█ AbsWeb啓動成功 █▇▅▃▂" + PURPLE + " ║" + RESET);
System.out.println(PURPLE + "║ " + GREEN + "Version: v2.6.13" + " " + PURPLE + "║" + RESET);
System.out.println(PURPLE + "║ " + BLUE + "Time: " + java.time.LocalTime.now() + " " + PURPLE + "║" + RESET);
System.out.println(PURPLE + "╚══════════════════════════╝" + RESET);
System.out.println();
}
}
自己也可以讓 AI 去生成。
三、實現啓動成功後的彩色提示
public class AbsWebApplication {
public static void main(String[] args) {
SpringApplication.run(AbsWebApplication.class, args);
printStartupMessage();
}
private static void printStartupMessage() {
String reset = "\u001B[0m";
String red = "\u001B[31m";
String yellow = "\u001B[33m";
String green = "\u001B[32m";
String cyan = "\u001B[36m";
String magenta = "\u001B[35m";
String blue = "\u001B[34m";
System.out.println(cyan + " (\\_/) " + reset);
System.out.println(cyan + " ( •_•) " + reset + red + " AbsWebApplication 啓動成功!" + reset);
System.out.println(cyan + " / >🍪 " + reset + yellow + " 祝你今天工作順利,項目無BUG~" + reset);
System.out.println();
System.out.println(magenta + " ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓" + reset);
System.out.println(magenta + " ┃ 🎉 歡迎使用 AbsWeb!🎉 ┃" + reset);
System.out.println(magenta + " ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛" + reset);
}
}
啓動後示例:
下面提供幾個示例:
放進方法進行替換就行了。
final String PURPLE = "\u001B[35m";
final String RED = "\u001B[31m";
final String RESET = "\u001B[0m";
System.out.println(PURPLE + " .----. .----. " + RESET);
System.out.println(PURPLE + " / \\/ \\" + RESET);
System.out.println(RED + " | (•) (•) | " + RESET);
System.out.println(PURPLE + " | < | " + RESET);
System.out.println(PURPLE + " \\ --' / " + RESET);
System.out.println(PURPLE + " `--------' " + RESET);
System.out.println(RED + " AbsWeb 已啓動!" + RESET);
public static void printTechWave() {
final String RESET = "\u001B[0m";
final String BLUE = "\u001B[34m";
final String CYAN = "\u001B[36m";
final String PURPLE = "\u001B[35m";
final String WHITE = "\u001B[37m";
System.out.println(CYAN + "╔════════════════════════════════════════════╗" + RESET);
System.out.println(CYAN + "║" + BLUE + " ██╗ ██╗████████╗██╗ ██╗███████╗ " + CYAN + "║" + RESET);
System.out.println(CYAN + "║" + BLUE + " ██║ ██║╚══██╔══╝██║ ██║██╔════╝ " + CYAN + "║" + RESET);
System.out.println(CYAN + "║" + BLUE + " ██║ ██║ ██║ ██║ ██║█████╗ " + CYAN + "║" + RESET);
System.out.println(CYAN + "║" + BLUE + " ██║ ██║ ██║ ██║ ██║██╔══╝ " + CYAN + "║" + RESET);
System.out.println(CYAN + "║" + BLUE + " ╚██████╔╝ ██║ ╚██████╔╝███████╗ " + CYAN + "║" + RESET);
System.out.println(CYAN + "║" + BLUE + " ╚═════╝ ╚═╝ ╚═════╝ ╚══════╝ " + CYAN + "║" + RESET);
System.out.println(CYAN + "║ ║" + RESET);
System.out.println(PURPLE + "║ 🚀 AbsWeb Application 啓動成功!🚀 ║" + RESET);
System.out.println(PURPLE + "║ Version: v2.6.13 " + WHITE + "啓動時間: " + java.time.LocalTime.now() + " " + PURPLE + " ║" + RESET);
System.out.println(CYAN + "╚════════════════════════════════════════════╝" + RESET);
}