ioc
2022-04-13 00:16:31 2 举报
ioc
作者其他创作
大纲/内容
注册具体实现
定义解析bean的方法
BeanDefinitions原料
BeanDefinition
包含BeanDefinition和一些包名,id,bean名称等信息
重点
parseBeanDefinitions
还没实现
父亲ApplicationContext容器
Readerio操作(不属于任何容器)
Resource
ConcurrentHashMap
后置处理器
createBeanInstance
去祖宗容器getbean
注册中心
xml元素
完成注册
doGetBean
EncodedResource
bean=instanceWrapper.getWrappedInstance()
ApplicationContext
根节点Element
ResourceLoader属于context容器
Value:
存入
ApplicationContext容器
这个方法已经实现了,从缓存中拿单例的时候,也是这个方法,实现过了。
ReaderContext
doRegisterBeanDefinitions
2.资源加载
doCreateBean
InputStream inputStream = encodedResource.getResource().getInputStream()
sharedInstance=createBean()
解决bean的循环依赖,当前bean实例和依赖全部注册,完成依赖注入。
这是真正的实例化bean
LoadBeanDefinitions加载过程使用 factory的注册中心和context的资源加载器
DefaultListableBeanFactory
原料
解析返回
继承并拓展
BeanName
可配置,可遍历,可装配
1.初始化注入
document对象
Key:
getbean(所有的引用依赖)
AbstractAutowireCapableBeanFactory
configLocations配置文件的位置
BeanDefinitionsRegisty
转成
前置操作
getResource
Definition注册中心
getBean
加载资源之前初始化reader,同时注入了注册中心
解析器
application context容器初始化资源定位,载入,注册
二次封装BeanDefinitionHolder
强转为解析器,去解析文件信息
InputResource(io流封装的对象)
BeanFactory
可上求父类容器
注册:先解析,后注册,注册就是将BD存入到hashmap中
getBean(重载方式很多种)
创建BeanDefinitionParserDelegate
0 条评论
下一页