初始化时,会加载配置文件 META-INF/spring.factories文件:
继续看run方法实现
一、获取并启动监听器
SpringApplicationRunListeners listeners = getRunListeners(args);
会继续获取Spring的工厂实例列表,如下图
1. 创建工厂实例,首先根据入参的name列表循环,初始化每个name对应的类instanceClass
2. 然后校验是否可以转化为指定的类型type
3.从上面初始化的类,获取构造constructor
4.使用BeanUtils.instantiateClass,实例化一个instance
5.最后添加到实例列表instances
完成工厂实例列表创建后,再初始化监听器listeners
然后调用listeners.starting() ,本质是做multicastEvent,从下图配置中获取ApplicationListeners,然后监听入参的event,也就是ApplicationStartingEvent
鉴权,日志, 属性等监听器listener