⭐⭐⭐ Spring Boot 项目实战 ⭐⭐⭐ Spring Cloud 项目实战
《Dubbo 实现原理与源码解析 —— 精品合集》 《Netty 实现原理与源码解析 —— 精品合集》
《Spring 实现原理与源码解析 —— 精品合集》 《MyBatis 实现原理与源码解析 —— 精品合集》
《Spring MVC 实现原理与源码解析 —— 精品合集》 《数据库实体设计合集》
《Spring Boot 实现原理与源码解析 —— 精品合集》 《Java 面试题 + Java 学习指南》

摘要: 原创出处 blog.csdn.net/weixin_45677023 「Rock丶」欢迎转载,保留摘要,谢谢!


🙂🙂🙂关注微信公众号:【芋道源码】有福利:

  1. RocketMQ / MyCAT / Sharding-JDBC 所有源码分析文章列表
  2. RocketMQ / MyCAT / Sharding-JDBC 中文注释源码 GitHub 地址
  3. 您对于源码的疑问每条留言都将得到认真回复。甚至不知道如何读源码也可以请教噢。
  4. 新的源码解析文章实时收到通知。每周更新一篇左右。
  5. 认真的源码交流微信群。

一、自定义 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);
}
文章目录
  1. 1. 一、自定义 Spring Boot 启动横幅 banner.txt
    1. 1.0.1. 1、什么是 banner.txt?
    2. 1.0.2. 2、创建或修改 banner.txt
      1. 1.0.2.1. 2.1、文件位置:
      2. 1.0.2.2. 2.2. 内容示例(纯色风格 + 启动信息):
    3. 1.0.3. 3、加点颜色和风格(可选)
    4. 1.0.4. 4、启动测试
  • 2. 二、进阶方式:关闭默认 Banner,自定义 Java 启动内容
    1. 2.0.1. 1、禁用 Spring Boot 的默认 banner:
    2. 2.0.2. 2、自定义启动打印代码
  • 3. 三、实现启动成功后的彩色提示