SpringIOC整体流程
2022-05-17 21:16:24 0 举报
描述了SpringIoc的整体流程,细节也在里面
作者其他创作
大纲/内容
一级缓存:大名鼎鼎单例缓存池,保存所有单例bean二级缓存:key为beanName,value是早期包装的对象三级缓存:也是早期对象,
AnnotationApplicationContext(衣柜店2)
举个买柜子的例子
BeanPostProcessor(bean后置处理器)
统一设计成BeanDefinition图纸
Aop代理
统一处理成通用bean定义
B依赖A
ClassPathXMLApplicationContext
BeanDefinitionRegistryPostProcessor(bean定义注册后置处理器)
可以注册bean定义
Bean的简易生命周期
BeanFactory:Spring的顶层核心接口,使用简单工厂模式,负责生产bean
jdk
class BeanA{@AutowiredBeanB b;}
BeanFactoryPostProcessor(bean工厂后置处理器)
class BeanB{@AutowiredBeanA a;}
BeanDefinition:Spring的顶层核心接口,封装了bean的一切原料
map.get(\"user\")
ClassPathXMLApplicationContext(衣柜店1)
BeanDefinitionReader:卖柜子的销售
循环依赖
我来买柜子,是被标记的@Component或者xml修饰的类
可以修改bean定义
BeanDefinitionReader(读取器)BeanDefinitionScanner(扫描器)BeanDefinitionRegistry(注册器)
AbstractAutoProxyCreator的postProcessAfterInitialization()
cglib
IOC容器
A依赖B
BeanDefinition
BeanFactory
交给
属性填充
执行初始化方法:initMethod,destory..
BeanDefinitionScanner:接待买柜子的客服
具备
填充属性Populate@Autowired、@Value
AnnotationApplicationContext
类被Spring修饰1、xml:<bean id='user\" class=\"com.xx.User\"/>...2、@注解:@Service、@Component....
BeanDefinitionRegistry:设计师傅
我想要个@Lazy@Scope等修饰的柜子
Bean实例化(反射)
调用各种Aware,比如@PostConstruct、InitializingBean、initMethod等
getBean(\"user\")
Bean
* 3
解决方案:通过三个Map解决,并且根据对象是否在创建中这个标识,跳出循环
BeanFactory生产柜子
getBean去生产Bean对象
图纸交给Bean工厂去生产Bean对象
put
0 条评论
下一页