如何讓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/zh-hant/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

發表回復

登錄後才能評論