一、自定义 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. 内容示例(纯色风格 + 启动信息):
bash
===========================================
== 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 颜色,在支持的终端中会显示彩色效果:
bash
${AnsiColor.BRIGHT_CYAN}
===========================================
== AbsWeb 启动成功! 🚀 ==
== 端口:${server.port} ==
== 环境:${spring.profiles.active} ==
== 时间:${date} ==
===========================================
${AnsiColor.DEFAULT}
4、启动测试
启动项目时,你会看到类似输出:
ini
===========================================
== AbsWeb 启动成功! 🚀 ==
== 端口:8082 ==
== 环境:test ==
== 时间:2025-06-13 16:52:10 ==
===========================================
提供几个网站可以自己去生成图案:
二、进阶方式:关闭默认 Banner,自定义 Java 启动内容
1、禁用 Spring Boot 的默认 banner:
在你的配置文件(如 application.yml
或 application.properties
)中添加:
yml 文件:
yaml
spring:
main:
banner-mode: "off"
properties 文件:
ini
spring.main.banner-mode=off
2、自定义启动打印代码
在主启动类中添加一个打印方法,利用 ANSI 转义码输出彩色字符:
arduino
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();
}
}
输出结果如下:
下面多提供几个图案:
java
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 去生成。
三、实现启动成功后的彩色提示
ini
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);
}
}
启动后示例:
下面提供几个示例:
放进方法进行替换就行了。
java
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);
}