Spring源码
2021-01-11 11:41:05 0 举报
Spring源码
作者其他创作
大纲/内容
AbstractAutowireCapableBeanFactory
+ doCreateBean(params)
BeanDefinitionReader
+ loadBeanDefinitions(resource)+支持xml properties格式
三级缓存
instantiateBean(...) 方法,默认构造函数注入
populateBean()
1.填充前 执行InstantiationAwareBeanPostProcessor 增强BeanPost子类postProcessAfterInstantiation进行实例化后处理2.填充属性3.继续获取上面processor,对填充属性进行处理
createBeanInstance
先从factoryBeanInstanceCache获取如果为null 则调用此方法 BeanDefinition---->BeanWrapper
Bean实例
@Controller
ResourceLoader
+ getResource(location)renturn Resource
ByteArray类资源
singletonFactories
File类资源
注册中心
InputStream类资源
BeanFactoryPostProcessor
+postProcessBeanFactory()用于增强BeanDefine例如:PropertyPlaceholderConfigurer 用于解析上下文占位符 比如数据库连接池密码${pwd}
Resource
资源处理
initializeBean()
1. 激活 Aware 方法。2. 后置处理器的应用。(Before逻辑)3. 激活自定义的 init 方法。4.后置处理器的应用。(After逻辑)
ClassPathBeanDefinitionScanner
+ doScan(path)
addSingletonFactory()
方便后期解决循环依赖
Url类资源
@Component
instantiateUsingFactoryMethod(...) 方法,工厂方法初始化
根据名称来自动注入(#autowireByName(...))
applyMergedBeanDefinitionPostProcessors
后置处理修改 BeanDefinitionBeanPostProcessor子接口例如:RequiredAnnotationBeanPostProcessor用于处理@Required
ResourcePatternResolver
+ getResource(location)return Resource[]
singletonObjects
AnnotatedBeanDefinitionReader
+ loadBeanDefinitions(resource)
singletonObjects :单例对象earlySingletonObjects :提前曝光的单例对象singletonFactories : 单例对象工厂的
@Repository
BeanDefinition
autowireConstructor(...) 方法,构造函数自动注入初始化
根据类型来自动注入(#autowireByType(...))
ClassPath类资源
1.处理循环依赖2.注册Bean
1.先缓存中获取Bean2.如果获取到,需要判断是普通的bean,还是FactoryBean
earlySingletonObjects
@Service
如果存在 Supplier 回调,则使用给定的回调方法初始化策略
InputStream
BeanFactory
AbstractBeanFactory
+doGetBean()-+getObjectForBeanInstance()
BeanDefinitionRegistry
+registerBeanDefinition()+BeanFactory默认实现此接口
0 条评论
下一页