如下是具体的执行方法
1.
可以从BeanDefinitionLoader这个加载类中的方法来看!可以看到两种方式
这是利用模式注解来加载,@springBootApplication --》@springBootConfigertion --》 @component
这是第二种,用class或者xml的方式
2.
以上可以看到servlet,webmvc,webreactive同时存在时,优先级从大到小是servlet --》webmvc --> webreactive
当然,可以强制设置类型
3.
4.
利用Spring工厂加载机制,实例化ApplicationContextInitializer接口的实现类,被加载的实现类都配置在
MATE-INF/spring.factories文件中,getSpringFactoriesInstances(Class<T> type,Class<?>[] parameterTypes, Object... args)这个方法就负责加载配置类并实例化和排序后返回,后面监听器、异常收集器和Runner等也是通过这个类实现实例化对应实现类的。
5.
更多请参考