几个重要的事件回调机制
ApplicationContextInitializer
SpringApplicationRunListener
ApplicationRunner
CommandLineRunner
启动流程
1.创建SpringApplication对象
1 initialize(sources); 2 private void initialize(Object[] sources) { 3 //保存主配置类 4 if (sources != null && sources.length > 0) { 5 this.sources.addAll(Arrays.asList(sources)); 6 } 7 //判断当前是否是一个web应用 8 this.webEnvironment = deduceWebEnvironment(); 9 //从类路径下META-INF/spring.factories配置的所有ApplicationContextInitializer;然后保存起来 10 setInitializers((Collection) getSpringFactoriesInstances(ApplicationContextInitializer.class)); 11 //从类路径下找到META-INF/spring.factories配置的所有ApplicationListener; 12 setListeners((Collection) getSpringFactoriesInstances(ApplicationListener.class)); 13 //从多个配置类中找到那个有main方法的主配置类 14 this.mainApplicationClass = deduceMainApplicationClass(); 15 }
2.运行run方法
原文:https://www.cnblogs.com/yang-young-young/p/9498992.html