SpringBoot启动源码
2021-01-27 15:44:30 3 举报
SpringBoot启动源码时序图
作者其他创作
大纲/内容
doScan
加载应用配置文件2.4以前:EnvironmentPostProcessor.postProcessEnvironment2.4以后:ConfigDataEnvironmentPostProcessor.postProcessEnvironment
initialize
super.refresh
doCreateBean
Spring--刷新上下文
返回应用配置
这里是简单构造器(无参)。有参构造器会按构造函数要求加载Bean。比较复杂不做介绍
environmentPrepare
getRunListeners
AbstractAspectJAdvisorFactory
触发@Import扩展点,比如SpringCloudFegin利用Import注入客户端代理
扫描缓存所有的切面
run
返回代理Bean
addSingletonFactory
doGetBean
postProcessAfterInitialization
refreshContext
canApply
SpringAppliction
preInstantiateSingletons
AbstractAutoProxyCreator
findCandidateAdvisors覆盖
BeanPostProcessor子类
获取spring应用启动监听
有合适的切面去生成代理类Proxy
注册BeanPostProcessor到BeanFactory
getCacheKey 检查缓存
wrapIfNecessary包装必要的Bean
根据注解扫描应用中所有的Bean
BeanUtils
Web上下文利用这个模板方法,开启Web容器开始接受请求。并发布Web容器启动成功的事件
boolean是否是切面
CommonAnnotationBeanPostProcessorAutowiredAnnotationBeanPostProcessor两个子类,负责两种注解的IOC注入
初始化web容器
返回BeanWrapper
findAdvisorsThatCanApply
返回需要绑定的切面
AOP-切入逻辑工厂
onRefresh
invokeInitMethods
SimpleInstantiationStrategy
registerListeners
发布ApplicationContextInitializedEvent事件
SpringBoot--初始化准备
prepareContext
返回应用
ServletWebServerApplicationContext
BeanFactoryAspectJAdvisorsBuilder
ApplicationContextInitializer
finishRefresh
返回监听发布器
AbstractApplicationContext
InstantiationAwareBeanPostProcessor
Proxy-代理
finishBeanFactoryInitialization实例化单例bean
BeanPostProcessor
SpringFactoriesLoader
根据配置和被代理类的属性,返回JdkDynamicAopProxy 或ObjenesisCglibAopProxy
instantiate
返回AopProxy
DefaultSingletonBeanRegistry
buildAspectJAdvisors
ClassPathBeanDefinitionScanner
Bean构造工具
如果想写插件在容器正式启动之前做点什么,需要确保切入点是在此之前
loadFactoryNames
initializeBean
返回BeanDefinitionHolder
refresh
instantiateClass
AopProxy
onApplicationEvent
createApplicationContext
isAspect
getBean
DefaultAopProxyFactory
prepareEnvrionment
返回所有的切面
返回代理类
ProxyFactory
有机会替换bean
postProcessBeforeInitialization
AbstractAutowireCapableBeanFactory
AOP
getProxy
继承
实现
EnvironmentPostProcessor
postProcessBeanDefinitionRegistry
返回合适的切面
将刚创建好的对象加入单例工厂缓存。以解决循环注入
registerBeanDefinitions
AnnotationAwareAspectJAutoProxyCreator
单例缓存 + 单例工厂
DefaultListableBeanFactory
AopUtils
createAopProxy
getSingleton
registerBeanPostProcessors
createWebServer
SpringApplicationRunListeners
Spring--扫面bean
ConfigurationClassPostProcessor
初始化应用监听
加载动态插件,类似SPI
调用初始化方法InitializingBean实现和init-method属性
BeanFactory BeanRegistry子类
ImportBeanDefinitionRegistrar
populateBean
返回实现
postProcessProperties
ConfigFileApplicationListener
new
getRunListenersnew SpringApplicationRunListener
AbstractBeanFactory
有可能返回一个新的Bean
入口
Spring--加载bean
返回单例
0 条评论
下一页