Spring
2021-01-27 17:05:09 1 举报
登录查看完整内容
Spring创建对象的过程
作者其他创作
大纲/内容
Container 存储Bean对象
Bean的生命周期
BeanDefinition
cglib
init-method
ApplicationContext.refresh() 的13核心方法:1、prepareRefresh:做容器前的准备工作,设置一些变量、标志位2、obtainFreshBeanFactory:创建Bean工厂3、prepareBeanFactory:BeanFactory的准备工作,对各种属性进行填充4、postProcessBeanFactory:子类覆盖方法做额外的处理,此处我们自己一般不做任何扩展工作,但是可以查看web中的代码,是有具体实现的5、invokeBeanFactoryPostProcessors:调用各种BeanFactory处理器6、registerBeanPostProcessors:注册Bean处理器,这里是注册功能,真正调用的是getBean方法7、initMessageSource:为上下文初始化Message源,及不同语言的消息体,国际化处理8、initApplicationEventMulticaster:初始化事件监听多路广播器9、onRefresh:留给子类来初始化其他的Bean10、registerListeners:在所有注册的Bean中查找listener bean ,注册到消息广播器中11、finishBeanFactoryInitialization:初始化剩下的单例对象(非懒加载的)12、finishRefresh:完成刷新过程,通知生命周期处理器lifecycleProcessor刷新过程,同时发出ContextRefreshEvent通知别人13、resetCommonCaches:重置Spring容器内省缓存
yaml
BeanPostProcessor
完成对Bean的修改或扩展工作
抽象接口约束
初始化
1、创建BeanFactory容器2、加载配置文件,解析Bean定义信息,包装成BeanDefinition3、执行BeanFactoryPostPossessor准备工作:准备BeanPostProcessor,广播器,监听器4、实例化操作5、初始化操作6、获取对象
Befor
populateBean
实例化
增强器后置处理器
JDK
Bean定义信息
new反射(Spring中不直接走这步)
销毁流程
BeanFactoryPostProcessor
properties
Constructor ctor = clazz.getDeclaredConstrutor();Object obj = ctor.newInstance();
增强BeanAOP
After
xml
填充属性
执行Aware接口的方法
BeanFactory
动态代理
BeanDefinitionReader
注解
反射创建
PostProcess
完整对象
完成对BeanFactory相关信息的修改或扩展
0 条评论
回复 删除
下一页