本文共 1731 字,大约阅读时间需要 5 分钟。
开始
SpringApplication.run(SampleController.class, args);
开始SpringApplication的初始化
public SpringApplication(Object... sources) { //一些初始化,监听器,容器初始化 this.initialize(sources); }
执行过程的方法
public ConfigurableApplicationContext run(String... args) {//主要执行过程}
springboot的banner图案就在上面的方法内被执行,打印到控制台
Banner printedBanner = this.printBanner(environment);//生成context会判断是否在this.webEnvironment ?context = this.createApplicationContext();//根据环境打印this.prepareContext(context, environment, listeners, applicationArguments, printedBanner);
上面的this.printBanner(environment);会取到banner实例,包含banner的字符
private Banner printBanner(ConfigurableEnvironment environment) { if (this.bannerMode == Mode.OFF) { return null; } else { ResourceLoader resourceLoader = this.resourceLoader != null ? this.resourceLoader : new DefaultResourceLoader(this.getClassLoader()); //SpringApplicationBannerPrinter的属性DEFAULT_BANNER就是SpringBootBanner类,SpringBootBanner的BANNER属性(字符数组)就是熟悉的控制台的banner图 SpringApplicationBannerPrinter bannerPrinter = new SpringApplicationBannerPrinter((ResourceLoader)resourceLoader, this.banner); //bannerPrinter.print会调用this.getBanner方法取得bannner字符数组,打印 return this.bannerMode == Mode.LOG ? bannerPrinter.print(environment, this.mainApplicationClass, logger) : bannerPrinter.print(environment, this.mainApplicationClass, System.out); } }
最后展示一下熟悉的springboot控制台banner图
. ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v1.5.9.RELEASE)
转载地址:http://orxlf.baihongyu.com/