[基本]SpringBootカスタムバナー

最初に書く

Spring Bootプロジェクトを開始すると、コンソールに次の情報が出力されます(ロゴとバージョン情報)。

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::                (v2.6.6)
复制代码

実践的な交換

バナーを生成する

次のリンクから、プロジェクトに必要なASCIIアートワードを生成できます。

次のようにバナー文字を生成します

                          To My Love!
  -=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-

               __        __        __        __
 .*.         /~ .~\    /~  ~\    /~ .~\    /~  ~\
 ***        '      `\/'      *  '      `\/'      *
  V        (                .*)(               . *)
/\|/\       \     Ming   . *./  \      Yue   . *./
  |          `\ .      . .*/'    `\ .      . .*/'     .*.
  |            `\ * .*. */' _    _ `\ * .*. */'       ***
                 `\ * */'  ( `\/'*)  `\ * */'          V
                   `\/'     \   */'    `\/'          /\|/\
                             `\/'                      |

     --+++==##<<{{******** Ming Yue ********}}>>##==++--
复制代码

バナーを置き換える

プロジェクトのリソースリソースディレクトリにbanner.txtファイル。例:上記で生成されたものを次のようにbanner置き換え

画像-20220411094548689

プロジェクトを再開し、上記のようにバナー文字を印刷します。この時点で、対応するSpring Bootのバージョン情報が欠落していることがわかりました。それでも必要な場合は、追加できます。

SpringBootのバージョン情報などを追加します。

  1. $ {spring-boot.version}:SpringBootのバージョン番号。
  2. $ {spring-boot.formatted-version}:SpringBootのフォーマットされたバージョン番号。
  3. $ {application.version}:MANIFEST.MFファイルのバージョン番号。
  4. $ {application.formatted-version}:フォーマットされたMANIFEST.MFファイルのバージョン番号情報。

構成ファイルで定義application.propertiesされ

app.author=Strive
复制代码

最終的なファイルは次のとおりです。プロジェクトを再開して表示および印刷します

                          To My Love!
  -=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-

               __        __        __        __
 .*.         /~ .~\    /~  ~\    /~ .~\    /~  ~\
 ***        '      `\/'      *  '      `\/'      *
  V        (                .*)(               . *)
/\|/\       \     Ming   . *./  \      Yue   . *./
  |          `\ .      . .*/'    `\ .      . .*/'     .*.
  |            `\ * .*. */' _    _ `\ * .*. */'       ***
                 `\ * */'  ( `\/'*)  `\ * */'          V
                   `\/'     \   */'    `\/'          /\|/\
                             `\/'                      |

     --+++==##<<{{******** Ming Yue ********}}>>##==++--
:: Spring Boot :: (${spring-boot.version})
                                           --by ${app.author}
复制代码

次のように印刷されます。

                          To My Love!
  -=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-

               __        __        __        __
 .*.         /~ .~\    /~  ~\    /~ .~\    /~  ~\
 ***        '      `\/'      *  '      `\/'      *
  V        (                .*)(               . *)
/\|/\       \     Ming   . *./  \      Yue   . *./
  |          `\ .      . .*/'    `\ .      . .*/'     .*.
  |            `\ * .*. */' _    _ `\ * .*. */'       ***
                 `\ * */'  ( `\/'*)  `\ * */'          V
                   `\/'     \   */'    `\/'          /\|/\
                             `\/'                      |

     --+++==##<<{{******** Ming Yue ********}}>>##==++--
:: Spring Boot :: (2.6.6)
                                           --by Strive
复制代码

実装の原則

Bannerインターフェイスは特にこの操作を実装します。印刷バナーをカスタマイズするには、クラスをカスタマイズしてこのインターフェイスを実装し、印刷するprintBannerメソッドです。Springbootプロジェクトが開始すると、実装クラスオブジェクトが作成され、オブジェクトのprintBannerメソッドます。

package org.springframework.boot;

import java.io.PrintStream;
import org.springframework.core.env.Environment;

@FunctionalInterface
public interface Banner {
  void printBanner(Environment environment, Class<?> sourceClass, PrintStream out);

  public static enum Mode {
    OFF, // 关闭 banner 打印
    CONSOLE, // 打印 banner 到 控制台
    LOG; // 打印 banner 到日志文件

    private Mode() {
    }
  }
}
复制代码

printBannerデフォルトでは、次の3つの実装があります。

  • ImageBanner:画像バナーを読み込んで印刷します。
  • ResourceBanner:キャラクターバナーをロードして印刷します。
  • SpringBootBanner:デフォルトでは、SpringBootBanner実装クラスがバナーの印刷に使用されます。

画像-20220411101213577

おすすめ

転載: juejin.im/post/7085167880781692958