入口
SpringApplication的
Banner printedBanner = printBanner(environment);
断点跟踪
1.判断当前的Banner打印位置
private Banner printBanner(ConfigurableEnvironment environment) {
//判断banner是否关闭
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);
}
// 默认console 打印在控制台
return bannerPrinter.print(environment, this.mainApplicationClass, System.out);
}
Mode是个枚举类包括三个值:
2.默认打印SpringBoot内置的Banner
直接看print方法,因为是走的控制台,所以直接上面的最后一个return返回。
public Banner print(Environment environment, Class<?> sourceClass, PrintStream out) {
Banner banner = getBanner(environment);
banner.printBanner(environment, sourceClass, out);
return new PrintedBanner(banner, sourceClass);
}
private Banner getBanner(Environment environment) {
Banners banners = new Banners();
//获取图片Banner
banners.addIfNotNull(getImageBanner(environment));
//获取文本Banner
ban