SpringBoot之banner打印

313 阅读1分钟

实现

实现方式一

拷贝banner.txt(注意文件名为banner,文件类型可以是图片)文件到resources文件夹下

实现方式二

如果文件名不叫banner,则需要在配置文件中配置 spring.banner.location 这个属性

实现方式三

在启动类上添加

springApplication.setBanner(new ResourceBanner(new ClassPathResource("like.jpg")));

关闭banner打印

在配置文件配置

#关闭banner打印
#spring.main.banner-mode=off

banner打印原理

源码挺简单逸都的,可查看org.springframework.boot.SpringApplication的run(java.lang.String...)方法

image.png

image.png

image.png

package org.springframework.boot;

import java.io.PrintStream;

import org.springframework.boot.ansi.AnsiColor;
import org.springframework.boot.ansi.AnsiOutput;
import org.springframework.boot.ansi.AnsiStyle;
import org.springframework.core.env.Environment;

/**
 * Default Banner implementation which writes the 'Spring' banner.
 *
 * @author Phillip Webb
 */
class SpringBootBanner implements Banner {

   private static final String[] BANNER = { "", "  .   ____          _            __ _ _",
         " /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \", "( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \",
         " \\/  ___)| |_)| | | | | || (_| |  ) ) ) )", "  '  |____| .__|_| |_|_| |_\__, | / / / /",
         " =========|_|==============|___/=/_/_/_/" };

   private static final String SPRING_BOOT = " :: Spring Boot :: ";

   private static final int STRAP_LINE_SIZE = 42;

   @Override
   public void printBanner(Environment environment, Class<?> sourceClass, PrintStream printStream) {
      for (String line : BANNER) {
         printStream.println(line);
      }
      String version = SpringBootVersion.getVersion();
      version = (version != null) ? " (v" + version + ")" : "";
      StringBuilder padding = new StringBuilder();
      while (padding.length() < STRAP_LINE_SIZE - (version.length() + SPRING_BOOT.length())) {
         padding.append(" ");
      }

      printStream.println(AnsiOutput.toString(AnsiColor.GREEN, SPRING_BOOT, AnsiColor.DEFAULT, padding.toString(),
            AnsiStyle.FAINT, version));
      printStream.println();
   }

}

文本输出

image.png

图片输出

image.png