bean创建流程
2021-12-21 14:01:09 13 举报
AI智能生成
bean
作者其他创作
大纲/内容
1-类加载校验
2-⽅法覆盖校验和准备
3-如果 Bean 配置了实例化的前置处理器,则返回对应的代理对象
applyBeanPostProcessorsBeforeInstantiation()
applyBeanPostProcessorsAfterInitialization()
4-如果没有3,则创建 Bean :关键⽅法doCreateBean
1实例化
createBeanInstance方法
instantiateBean默认无参构造
getInstantiationStrategy().instantiate(mbd, beanName, parent);
选择jdk动态代理或者cglib来创建bean实例
applyMergedBeanDefinitionPostProcessors方法
解决@autowired注解 和@value注解
earlybean 实例化之后的bean
解决循环依赖问题
2属性填充
populateBean
autowireByName(beanName, mbd, bw, newPvs)
autowireByType(beanName, mbd, bw, newPvs)
applyPropertyValues(beanName, mbd, bw, pvs)
作用:将所有属性注入到beanwrapper
3初始化
initializeBean
invokeAwareMethods(beanName, bean)
aware 相关接⼝实现回调
applyBeanPostProcessorsBeforeInitialization(wrappedBean, beanName)
postProcessBeforeInitialization 回调
invokeInitMethods(beanName, wrappedBean, mbd) 通过反射初始化bean
((InitializingBean) bean).afterPropertiesSet()
invokeCustomInitMethod(beanName, bean, mbd)
applyBeanPostProcessorsAfterInitialization(wrappedBean, beanName)
postProcessAfterInitialization 回调
4销毁
0 条评论
下一页