SpringBoot 控制台秒变炫彩特效,秀翻同事指南!

一、自定义 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.ymlapplication.properties)中添加:

yml文件:

makefile 复制代码
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);
    }
}

启动后示例:

图片

下面提供几个示例:

放进方法进行替换就行了。

ini 复制代码
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);
}
相关推荐
Rocket MAN1 天前
Spring Boot 缓存:工具选型、两级缓存策略、注解实现与进阶优化
spring boot·后端·缓存
程序定小飞1 天前
基于springboot的民宿在线预定平台开发与设计
java·开发语言·spring boot·后端·spring
FREE技术1 天前
山区农产品售卖系统
java·spring boot
摇滚侠1 天前
Spring Boot3零基础教程,云服务停机不收费,笔记71
java·spring boot·笔记
摇滚侠1 天前
Spring Boot3零基础教程,监听 Kafka 消息,笔记78
spring boot·笔记·kafka
摇滚侠1 天前
Spring Boot3零基础教程,RedisTemplate 定制化,笔记70
spring boot·笔记·后端
刘一说1 天前
深入浅出 Spring Boot 自动配置(Auto-Configuration):原理、机制与最佳实践
java·spring boot·后端
顽疲1 天前
SpringBoot + Vue 集成阿里云OSS直传最佳实践
vue.js·spring boot·阿里云
摇滚侠1 天前
Spring Boot3零基础教程,Kafka 小结,笔记79
spring boot·笔记·kafka