zl程序教程

您现在的位置是:首页 >  后端

当前栏目

SpringBoot如何自定义启动的Banner 在线生成SpringBoot启动的Banner工具 如何使用在线生成工具生成的SpringBoot的Banner

SpringBoot工具 如何 启动 生成 自定义 在线 Banner
2023-09-27 14:25:59 时间

1. 引言

我们在启动SpringBoot时,控制台会打印SpringBoot Logo 以及版本信息,如下图所示:

在这里插入图片描述

我们能否自定义这个banner呢?当然可以自定义,如下图所示:

在这里插入图片描述

怎么生成自定义的banner,以及如何引用生成的自定义banner呢?请继续往下读。

2. 生成自定义banner

我们可以有以下两种方式,可以生成自定义banner。

2.1 通过文件引入

  1. \src\main\resources\banner.txt创建banner.txt文件

  2. 将使用在线生成spring boot的banner工具生成的banner字符复制到banner.txt文件中,如下图所示:

在这里插入图片描述

  1. 启动项目即可。

2.2 通过代码实现

SpringBoot有一个接口org.springframework.boot.Banner是专门来做这个操作的。

我们可以实现这个接口来自定义打印 Banner 信息。但不推荐自己去写,因为这不是重要的功能,没必要花时间在这上面,既然 SpringBoot 提供了这个功能,肯定为我们实现了。

  • 文本格式:org.springframework.boot.ResourceBanner

SpringBoot会读取配置项banner.txtbanner.location,从配置项中获取真实的文件地址。

如果配置中没有配置,会把配置项作为文件去加载。

  • 图片格式:org.springframework.boot.ImageBanner

SpringBoot 加载配置项banner.image.location,从配置项中获取真实的路径,SpringBoot 会根据配置项的路径加载文件。

如果没有配置banner.image.location,转而依次加载banner.gif、banner.jpg、 banner.png这三个中存在的文件;

如果上面两种都没有配置,SpringBoot 就会加载默认的 Banner;也就是文章开头介绍的方式。

接下来,我会介绍文本格式的(ResourceBanner)的banner

  1. 创建启动类:
src/main/java/{package}/Application.java
@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        // 启动颜色格式化
       // 这不是唯一启动颜色格式的方式,有兴趣的同学可以查看源码
       /**
         * 1. AnsiOutput.setEnabled(AnsiOutput.Enabled.ALWAYS);
         * 2. 在`src/main/resources`目录下新建文件`application.properties`,
         *    内容为:`spring.output.ansi.enabled=always`
         * 
         * 重要:如果配置第二种方式,第一种方式就不会起作用
         */
        AnsiOutput.setEnabled(AnsiOutput.Enabled.ALWAYS);
        new SpringApplicationBuilder(Application.class)//
                .main(SpringVersion.class) // 这个是为了可以加载 Spring 版本
                .bannerMode(Banner.Mode.CONSOLE)// 控制台打印
                .run(args);
    }
}
  1. 创建Banner文件

src/main/resource/banner.txt

${AnsiColor.BRIGHT_YELLOW}

//                          _ooOoo_                               //
//                         o8888888o                              //
//                         88" . "88                              //
//                         (| ^_^ |)                              //
//                         O\  =  /O                              //
//                      ____/`---'\____                           //
//                    .'  \\|     |//  `.                         //
//                   /  \\|||  :  |||//  \                        //
//                  /  _||||| -:- |||||-  \                       //
//                  |   | \\\  -  /// |   |                       //
//                  | \_|  ''\---/''  |   |                       //
//                  \  .-\__  `-`  ___/-. /                       //
//                ___`. .'  /--.--\  `. . ___                     //
//              ."" '<  `.___\_<|>_/___.'  >'"".                  //
//            | | :  `- \`.;`\ _ /`;.`/ - ` : | |                 //
//            \  \ `-.   \_ __\ /__ _/   .-` /  /                 //
//      ========`-.____`-.___\_____/___.-`____.-'========         //
//                           `=---='                              //
//      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^        //
//            佛祖保佑       永不宕机     永无BUG                  //

${AnsiColor.BRIGHT_RED}
Application Version: ${application.version}${application.formatted-version}
Spring Boot Version: ${spring-boot.version}${spring-boot.formatted-version}

从上面的内容中可以看到,还使用了一些属性设置:

  • ${AnsiColor.BRIGHT_RED}:设置控制台中输出内容的颜色,可以自定义,具体参考org.springframework.boot.ansi.AnsiColor

  • ${application.version}:用来获取MANIFEST.MF文件中的版本号,这就是为什么要在Application.java中指定 SpringVersion.class

  • {application.formatted-version}:格式化后的{application.version}版本信息
    ${spring-boot.version}:Spring Boot的版本号

  • {spring-boot.formatted-version}:格式化后的{spring-boot.version}版本信息

  1. 效果如下图

在这里插入图片描述

从效果图看,我们定义的文本最后被上了颜色,颜色是如何转换的,可以参考:颜色特效

3. 在线制作banner的网站

3.1 文本格式

  1. http://patorjk.com

我个人比较喜欢这种,因为,它可以输出所有字体的banner,如下图所示:

在这里插入图片描述

  1. https://www.bootschool.net

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

3.2 图片格式

  1. https://www.degraeve.com

  2. https://www.bootschool.net

4. 参考文档

  1. https://developer.aliyun.com/article/888566

  2. https://www.jianshu.com/p/a53f324c92f2