spring实例化
2024-07-12 15:12:15 0 举报
spring实例化流程图
作者其他创作
大纲/内容
findResourceMetadata
5 创建非单例对象
AbstractBeanFactory
registerDisposableBeanIfNecessary
CommonAnnotationBeanPostProcessor
postProcessProperties
非懒加载单例getBean
创建完成的对象容器
1 getInstanceSupplier来获取
instantiateClass
AbstractAutowireCapableBeanFactory
populateBean
applyMergedBeanDefinitionPostProcessors
postProcessMergedBeanDefinition
beanDefinition中已经收集到的销毁方法
earlySingletonObjects
buildResourceMetadata
创建bean的流程
doGetBean
1 缓存获取对象
InjectionMetadata
inject
destroy方法做销毁,tomcat会主动调用
singletonFactories
无参构造函数实例化instantiate
doCreateBean
3 找到带有Autoware注解的构造函数
field.invoke
2 BeanFactory来创建对象
preInstantiateSingletons
buildLifecycleMetadata
AutowiredFieldElement
ctor.newInstance
DefaultListableBeanFactory
1 找到所有构造函数
findAutowiringMetadata
6 根据scope来创建对象,可以用来自定义scope
2 遍历所有构造函数
AbstractApplicationContext
提早被使用的对象对象创建但是属性没有注入,被另一个类使用
buildAutowiringMetadata
Autowire注解收集
收集这个类信息DestructionAwareBeanPostProcessor
2 getFactoryMethodName来创建对象
依赖注入方法
instantiateBean
注册销毁的类registerDisposableBeanIfNecessary
finishBeanFactoryInitialization
findLifecycleMetadata
3 DependsOn的依赖先创建
InitDestroyAnnotationBeanPostProcessor
到此注解已经收集完成
解析注解:PostConstruct和PreDestroy
查找注解:Resource、PostConstruct、PreDestroy
有参构造函数实例化
AutowiredAnnotationBeanPostProcessor
6 根据scope来创建对象
AutowiredMethodElement
createBeanInstance
解析带有Resource注解的字段
4 创建单例对象
createBean
对象存放的三个缓存
到此对象实例化成功
DisposableBeanAdapter
构造函数DisposableBeanAdapter销毁函数收集
singletonObjects
注解收集
4 instantiateBean实例化
method.invoke
依赖注入
3 autowire修饰的Constructor来创建
SimpleInstantiationStrategy
0 条评论
回复 删除
下一页