Spring中Bean的加载过程
2022-12-15 21:50:02 0 举报
Spring中Bean的加载过程
作者其他创作
大纲/内容
输出设计图纸
工厂BeanFactory
销售业务员
BeanDefinitionReader
筛选沟通
1.实例化(反射/工厂方法)2.赋值(@Value/AutoWi...)byName/type/构造函数3.初始化(Autoware/@PostConstruct/InitializingBean/initMethod)
@Lazy@Scope
BeanDefinitionRegistry
产物IOC容器
售前工程师
Bean.....
BeanDefinitionSacnner
需求
高级顾问BeanDefinitionRegistry
通过BeanFactoryPostProcessor扩展点实现图纸修改
getBean
doCreateBean()
@Component...@Controller@ServiceXml...
图纸BeanDefinitionMap
研发部门BeanDefinitionRegistry
@JavaConfig顾问团队AnnotationConfigApplicationContext
实例化:createBeanInstance()反射是由Spring实例化,工厂由自己创建(new);实例化后/初始化后进行动态代理属性赋值:populateBean(),循环依赖解决加个出口(使用三级缓存)
finishBeanFactorylnitialization
市场
Spring中Bean的加载过程超级简化版
扩展点span style=\"font-size: inherit;\
三级缓存与循环依赖
XML模式设计院ClassPathXmlApplicationContext
BeanDefinition
Bean生命周期,其扩展点共9处
一级缓存:存放完整的Bean对象二级缓存:存放Bean对象,不一定是完整的bean对象,可能在某一时间点存在半成品,牺牲自己用于隔离一级缓存,使一级缓存对象完整(保证完整性会加锁,二级缓存加锁的粒度低于一级缓存,因为只存在不完整的Bean,在加入一级缓存时也会进行删除处理)三级缓存:存放的是函数接口,调用后置处理器BeanPostProcessor,这里会判断了是否是动态代理,如果是则在此处返回代理对象,否则返回原始对象
收藏
0 条评论
下一页