如何让SpringBoot显示自定义Banner?

一、什么是SpringBoot的Banner?

在讲解如何自定义SpringBoot的Banner之前,我们需要先了解一下什么是SpringBoot的Banner。当我们启动一个SpringBoot应用的时候,控制台上就会有一个默认的Banner显示。这个Banner通常是Spring Boot的标志性Logo,它的设计衍生自Pivotal公司的logo。默认的Banner内容如下:

  _______                               _______
 /  ___  \                             /  ___  \
|  /   \  | __ _ _______  __ _______  |  /   \  | __ _ _______
|  |   |  |/ _` |_  / _ \|  / /_  / _ \ |  |   |  |/ _` |_  / _ \
|  \__/  | (_| |/ / (_) |    < / / (_) ||  \__/  | (_| |/ / (_) |
 \______/ \__,_/___\___/|_|\_\/___\___/ \______/ \__,_/___\___/

这个Banner可以作为SpringBoot应用的一个重要标识,显示在控制台中。

二、如何自定义Banner?

1、创建Banner的文本文件

首先,我们需要创建Banner的文本文件。这个文本文件可以是任何格式的文本文件,只需要在文件中添加我们自己想显示的Banner即可。例如,我们可以使用记事本创建一个banner.txt文件,并在文件中添加我们自己的Banner。

 _______  _______           _        _     _ 
|       ||       |         | |      | |   | |
|_     _||   _   |  ___   | |  ___ | |_  | |
  |   |  |  | |  | / _ \ | | / _ \| __| | |
  |   |  |  |_|  || (_) || ||  __/| |_  |_|
  |___|  |_______| \___/ |_| \___| \__| (_)

注意:自定义Banner的文本中可以包含各种特殊字符,如单位符号,其他语言字符等。你可以使用网上一些生成Banner的网站来生成自定义Banner的文本,并将其保存为文本文件。

2、Banner的加载方式

SpringBoot提供了多种加载Banner的方式:

  • 在classpath根目录下放置banner.txt文件

SpringBoot会在classpath下默认找到banner.txt,并将其作为Banner输出,如果存在多个banner.txt文件,SpringBoot会随机选择一个进行输出。当然,如果你把文本文件命名为banner.gif、banner.jpg或者banner.png也是可以的,此时SpringBoot会自动把图片转换为ASCII字符来显示Banner。例如,将图片转化为Banner的效果如下:

                                                     ,ooo88888888oo,
                                                  ,oo`         `88        `o,
                                                ,88`              88           `88,
                                               ,88`                88             `88,
                                              ,88`                  88               `88,
                                              88`                     88                  `88
                                              88                       88                   88
                   _____    ____     ____
                  / ____|  / __ \   / __ \
                 | |      | |  | | | |  | |
                 | |      | |  | | | |  | |
                 | |____  | |__| | | |__| |
                  \_____|  \____/   \____/
  • 在SpringApplication中设置Banner

我们可以在SpringApplication中设置Banner。具体实现是创建一个SpringApplication实例,然后调用setBanner方法来设置Banner,示例代码如下:

@SpringBootApplication
public class CustomBannerDemoApplication {
  public static void main(String[] args) {
    SpringApplication app = new SpringApplication(CustomBannerDemoApplication.class);
    app.setBanner(new MyBanner());
    app.run(args);
  }
}
class MyBanner implements Banner {
  @Override
  public void printBanner(Environment environment, Class<?> aClass, PrintStream printStream) {
    printStream.print("\n  我的自定义Banner\n\n");
  }
}

上面的示例代码中,我们在MyBanner类中实现了Banner接口,并覆盖了其中的printBanner方法,使用自定义的Banner替代了默认的Banner。

三、自定义Banner的实际应用示例

我们可以使用Thymeleaf模板引擎来创建Banner文本,并且将其输出到控制台中。 大致步骤如下:

  1. 在pom.xml文件中添加thymeleaf的依赖,如下所示:
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
  </dependency>
  1. 创建Banner的Thymeleaf模板文件:
  <!DOCTYPE html>
  <html xmlns:th="http://www.thymeleaf.org">
  <head>
    <meta charset="UTF-8">
    <title>Spring Boot Custom Banner</title>
  </head>
  <body>
    <pre th:text="${banner}">
    ${banner}
    </pre>
  </body>
  </html>
  1. 创建BannerWriter类,用于输出自定义Banner:
  public class BannerWriter {
    private static final String BANNER_LOCATION = "banner.html";
    public void write(Environment environment, Class<?> sourceClass, PrintStream out) {
      try {
        final ResourceLoader resourceLoader = new DefaultResourceLoader();
        final Resource banner = resourceLoader.getResource("classpath:" + BANNER_LOCATION);
        if (!banner.exists()) {
          throw new FileNotFoundException();
        }
        try (Reader reader = new InputStreamReader(banner.getInputStream(), StandardCharsets.UTF_8)) {
          final String bannerContent = FileCopyUtils.copyToString(reader);
          out.println(bannerContent);
        }
      } catch (Exception e) {
        out.println("### SpringApplication Banner ###");
        out.println();
      }
    }
  }
  1. 在SpringBootApplication中设置Banner:
@SpringBootApplication
public class BannerApplication {
  public static void main(String[] args) {
    final SpringApplication app = new SpringApplication(BannerApplication.class);
    app.setBanner(new Banner() {
      @Override
      public void printBanner(Environment environment, Class<?> sourceClass, PrintStream out) {
        new BannerWriter().write(environment, sourceClass, out);
      }
    });
    app.run(args);
  }
}

四、总结

本文详细讲解了如何自定义SpringBoot的Banner,并提供了多种实现方式,包括在classpath下放置banner.txt文件、使用SpringApplication的setBanner方法设置Banner等,同时,本文还提供了一个实际应用的示例,演示了如何使用Thymeleaf模板引擎来创建Banner文本,并把Banner输出到控制台中。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/190038.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-11-29 13:53
下一篇 2024-11-29 13:53

相关推荐

  • 从ga角度解读springboot

    springboot作为目前广受欢迎的Java开发框架,其中的ga机制在整个开发过程中起着至关重要的作用。 一、ga是什么 ga即Group Artifacts的缩写,它是Mave…

    编程 2025-04-29
  • Python中自定义函数必须有return语句

    自定义函数是Python中最常见、最基本也是最重要的语句之一。在Python中,自定义函数必须有明确的返回值,即必须要有return语句。本篇文章将从以下几个方面对此进行详细阐述。…

    编程 2025-04-29
  • Python自定义列表

    本文将为大家介绍Python中自定义列表的方法和应用场景。对自定义列表进行详细的阐述,包括列表的基本操作、切片、列表推导式、列表的嵌套以及列表的排序,希望能够帮助大家更好地理解和应…

    编程 2025-04-27
  • 如何添加Python自定义模块?

    Python是一种非常流行的脚本语言,因其易学易用和功能强大而备受欢迎。自定义模块是Python开发中经常使用的功能之一。本文将从多个方面为您介绍如何添加Python自定义模块。 …

    编程 2025-04-27
  • SpringBoot Get方式请求传参用法介绍

    本文将从以下多个方面对SpringBoot Get方式请求传参做详细的阐述,包括URL传参、路径传参、请求头传参、请求体传参等,帮助读者更加深入地了解Get请求方式下传参的相关知识…

    编程 2025-04-27
  • SpringBoot如何设置不输出Info日志

    本篇文章将带您了解如何在SpringBoot项目中关闭Info级别日志输出。 一、为什么要关闭Info日志 在开发中,我们经常会使用Log4j、Logback等框架来输出日志信息,…

    编程 2025-04-27
  • 解决springboot中scanBasePackages无法读取子包的问题

    在使用springboot搭建项目时,可能会遇到scanBasePackages无法读取子包的问题。本文将从几个方面详细阐述如何解决这个问题。 一、问题描述 在使用Springbo…

    编程 2025-04-25
  • SpringBoot请求参数绑定

    解答:SpringBoot请求参数绑定是指将HTTP请求中的参数与Controller方法的参数绑定起来,使得参数的传递变得简单和方便。下面我们将从多个方面对SpringBoot请…

    编程 2025-04-25
  • 高德自定义地图——多维度定制地图

    一、使用高德自定义地图的必要性 高德自定义地图是指用户可以在高德地图上按照自己的要求添加标注、修改道路、调整地图颜色等一系列操作,从而形成符合自己需求的地图,而这种地图是只有拥有者…

    编程 2025-04-24
  • SpringBoot文件上传详解

    一、前言 随着互联网的发展,文件上传成为了必备的功能之一,而SpringBoot作为目前最流行的开发框架之一,为文件上传提供了便捷而强大的解决方案。 二、使用multipart/f…

    编程 2025-04-24

发表回复

登录后才能评论