- 运行run方法,加载spring容器,注册传进来的class类
- 初始化class类上的注解,实例化对应的bean
- 启动tomcat,并指定servlet的入口和端口
- 通过@import加载没有扫描到的@configurration类
- 在configurration类加入tomcat和jetty两个带条件的bean(@ConditionalOnClass)
- 在条件实现类获取带条件bean的全类名,用类加载器加载,加载到了就返回true实例化改bean并放入容器
- 如果要import很多configurration可以通过spi接口加载
- 实现DeferredImportSelector类可以放到最后加载,如果程序员实现了一样的bean优先使用程序员的bean