本文最后更新于 2024-04-25,欢迎来到我的Blog! https://www.zpeng.site/

Spring Boot自定义Banner

在Spring Boot中,可以通过在src/main/resources目录下创建一个名为banner.txt的文件来自定义启动Banner。Spring Boot会在启动时尝试读取这个文件,并以此作为Banner。

你也可以通过实现Banner接口或者继承SpringBootBanner类来编写自定义Banner。然后在Spring Boot应用的main方法中注册自定义Banner。

1、banner.txt

只需要在Spring Boot工程的/src/main/resources目录下创建一个banner.txt文件,然后将ASCII字符画复制进去,就能替换默认的banner了。

自定义位置

spring:
  banner:
  	# 或者 static/banner.txt
    location: classpath:static/banner.txt

application.yml

learn:
  version: 1.0.0

banner.txt

${AnsiColor.BRIGHT_GREEN}
Application Version: ${learn.version}
Spring Boot Version: ${spring-boot.version}${spring-boot.formatted-version}


${AnsiColor.BRIGHT_RED}
Spring Boot Version: ${spring-boot.version}${spring-boot.formatted-version}
////////////////////////////////////////////////////////////////////
//                          _ooOoo_                               //
//                         o8888888o                              //
//                         88" . "88                              //
//                         (| ^_^ |)                              //
//                         O\  =  /O                              //
//                      ____/`---'\____                           //
//                    .'  \\|     |//  `.                         //
//                   /  \\|||  :  |||//  \                        //
//                  /  _||||| -:- |||||-  \                       //
//                  |   | \\\  -  /// |   |                       //
//                  | \_|  ''\---/''  |   |                       //
//                  \  .-\__  `-`  ___/-. /                       //
//                ___`. .'  /--.--\  `. . ___                     //
//              ."" '<  `.___\_<|>_/___.'  >'"".                  //
//            | | :  `- \`.;`\ _ /`;.`/ - ` : | |                 //
//            \  \ `-.   \_ __\ /__ _/   .-` /  /                 //
//      ========`-.____`-.___\_____/___.-`____.-'========         //
//                           `=---='                              //
//      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^        //
//             佛祖保佑       永不宕机      永无BUG               //
////////////////////////////////////////////////////////////////////

【下面这些是配置在 banner 文件里面的:】

  • ${application.version}: 在MANIFEST.MF文件定义的应用程序版本号

  • ${application.formatted-version}:在MANIFEST.MF文件定义的应用程序版本号。增加v前缀,并用括号括起来

  • ${spring-boot.version}: Spring Boot的版本号

  • ${spring-boot.formatted-version} Spring Boot的版本号,增加v前缀,并用括号括起来

  • ${Ansi.NAME}、${AnsiColor.NAME}、${AnsiBackground.NAME}、${AnsiStyle.NAME}):ANSI转义码的名称

  • ${application.title}:在MANIFEST.MF文件定义的应用程序标题

测试

工具

借助这些工具,可以轻松地根据文字或图片来生成用于Banner输出的字符画。

https://patorjk.com/software/taag/

http://www.network-science.de/ascii/

https://www.bootschool.net/ascii

2、继承SpringBootBanner类

CustomBanner

package com.example.mail.demo;

import org.springframework.boot.Banner;
import org.springframework.core.env.Environment;

import java.io.PrintStream;

/**
 * 自定义启动banner类,用于在应用启动时显示自定义的banner信息。
 * 实现了Spring Boot的Banner接口。
 */
public class CustomBanner implements Banner {

    // 定义了一个字符串常量,存储自定义banner的文本内容。
    private static final String BANNER =
            "  _                      _          _____           \n" +
                    " | |                    | |        |   __|          \n" +
                    " | | __ _ _ __   ___   __| | ___   |  |__   ___ _ __ \n" +
                    " | |/ _` | '_ \\ / _ \\ / _` |/ _ \\  |   __| / _ \\ '__|\n" +
                    " | | (_| | | | | (_) | (_| | (_) | |  |___|  __/ |    \n" +
                    " |_|\\__,_|_| |_|\\___/ \\__,_|\\___/  |______|\\___|_|    \n";


    /**
     * 打印banner方法,当Spring Boot应用启动时调用。
     *
     * @param environment Spring环境,可用于获取应用配置等信息,本方法未使用该参数。
     * @param sourceClass 调用打印banner的方法的类,本方法未使用该参数。
     * @param out 打印流,用于输出banner到指定的输出流。
     */
    @Override
    public void printBanner(Environment environment, Class<?> sourceClass, PrintStream out) {
        // 输出定义好的banner文本。
        out.println(BANNER);
    }
}

启动类

package com.example.mail;

import com.example.mail.demo.CustomBanner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class MailApplication {

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

测试