重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
SpringBoot整体启动流程
1.BeanFactory和FactoryBean
BF通过工厂创建一系列的相同对象
FB用来生成独特的拥有复杂属性的对象(例如OpenFeigh用了FB)
2,SpringBoot源码
SpringApplication的构造方法
PrepareContext上下文中设置一系列属性值
load之前beanDefinationMap里是不包含当前的启动类的
load之后当前启动类已经出现在beanDefinitionMap里了
isComponent是检查当前类上的注解以及当前注解的层级中是否包含@Component
onRefresh会回到Spring里面的,obtainFreshBeanFactory获取工厂对象
方法比较长,但是基本上都是重复的模板处理过程,比较容易理解
Apply processing and build a complete ConfigurationClass by reading the annotations, members and methods from the source class. This method can be called multiple times as relevant sources are discovered.
Params:
configClass – the configuration class being build
sourceClass – a source class
Returns:
the superclass, or null if none found or previously processed
递归获取每个层级上的@Import
最终获取到@SpringBootApplication这个注解往上层级中所有的包含@Import的注解
都处理完之后回到parse方法,注意188行
这里就是自动配置的重点了
我们可以在spring.factories找到这些需要自动配置的类
处理过程中会去掉那些我们不需要的(根据starter)
接着回到refresh中,目前这些对象都还没有创建
onRefresh方法是创建webServer(一般是tomcat)的地方
finishBeanFactoryInitialization初始化所有非懒加载的单例对象
.
0
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧