work hard work smart

专注于Java后端开发。 不断总结,举一反三。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

SpringBoot banner内容获取和打印原理

Posted on 2020-02-26 22:29  work hard work smart  阅读(755)  评论(0编辑  收藏  举报

进入run方法。可以发现有一个printBanner方法

 

1、进入printBanner方法

	private Banner printBanner(ConfigurableEnvironment environment) {
		if (this.bannerMode == Banner.Mode.OFF) {
			return null;
		}
		ResourceLoader resourceLoader = (this.resourceLoader != null) ? this.resourceLoader
				: new DefaultResourceLoader(getClassLoader());
		SpringApplicationBannerPrinter bannerPrinter = new SpringApplicationBannerPrinter(resourceLoader, this.banner);
		if (this.bannerMode == Mode.LOG) {
			return bannerPrinter.print(environment, this.mainApplicationClass, logger);
		}
		return bannerPrinter.print(environment, this.mainApplicationClass, System.out);
	}

  第一行判断Banner的模式是否关闭,如果关闭直接返回。

 

2、进入bannerPrinter.print(environment, this.mainApplicationClass, System.out)

	public Banner print(Environment environment, Class<?> sourceClass, PrintStream out) {
		Banner banner = getBanner(environment);
		banner.printBanner(environment, sourceClass, out);
		return new PrintedBanner(banner, sourceClass);
	}

getBanner(environment);是获取
printBanner是打印

还是比较简单,可以查看源码

 

3、图片打印的关键代码

ImageBanner中的printBanner方法。其中readFrames是java中图案打印方法