spring代码流程
2023-04-21 15:42:30 0 举报
AI智能生成
为你推荐
查看更多
1
作者其他创作
大纲/内容
初始化Factory
bdMap添加:ConfigurationClassPostProcessor
bdMap添加:AutowiredAnnotationBeanPostProcessor
bdMap1添加:CommonAnnotationBeanPostProcessor
bdMap添加:DefaultEventListenerFactory、EventListenerMethodProcessor
初始化reader注册开天辟地5个bd
初始化scanner
this();
this.reader.register(componentClasses);
register(componentClasses);
invokeBeanFactoryPostProcessors前
获取候选的(@Configuration的类)放入configCandidates集合中
解析@Component的注解
解析@PropertySources注解
解析@ComponentScan注解
ImportSelector类型
ImportBeanDefinitionRegistrar类型
其他类型
处理@Import注解
处理@ImportResource注解
处理本身的 @Bean方法
处理默认的接口方法
doProcessConfigurationClass
parse----processConfigurationClass
创建@Configration的配置类的解析器并开始解析:ConfigurationClassParser
注册扫描到的类的bd
基于注册表构建和验证配置模型processConfigBeanDefinitions(人话:扫描指定包下的类@Bean、@Import、@Component、@ComponentSacn等)
BeanDefinitionRegistryPostProcessors.postProcessBeanDefinitionRegistry
超链接
判断是否是一个全配置类并进行ConfigurationClassEnhancer增强
enhanceConfigurationClasses
BeanFactoryPostProcessor.postProcessBeanFactory
ConfigurationClassPostProcessor
其他实现BeanFactoryPostProcessor后置处理器
invokeBeanFactoryPostProcessors(beanFactory);
注册bean后置处理器registerBeanPostProcessors(beanFactory);
transformedBeanName检查bean名称是否合法
处理dependsOn,保证当前 bean 所依赖的 bean 的初始化。当前bean是否有关联bean
resolveBeanClass
AbstractAutoProxyCreator
resolveBeforeInstantiation
instantiateUsingFactoryMethod
判断构造方法是否被解析过
处理@LookUp
从candidateConstructorsCache缓存中拿
找“构造方法”
放入缓存candidateConstructorsCache,并返回
SmartInstantiationAwareBeanPostProcessor.determineCandidateConstructors(子类)AutowiredAnnotationBeanPostProcessor.determineCandidateConstructors()
determineConstructorsFromBeanPostProcessors
autowireConstructor
执行默认:constructorToUse = clazz.getDeclaredConstructor();
instantiateBean
根据上面推断的构造方法执行构造:autowireConstructor or instantiateBean
判断是否支持循环依赖
属性填充populateBean
doCreateBean
创建:getSingleton----createBean
getBean----doGetBean
finishBeanFactoryInitialization(beanFactory);
refresh();
new AnnotationConfigApplicationContext(AppConfig.class);
spring
收藏
0 条评论
回复 删除
下一页