java编程/提升

spring源码解析---spring-core(三)

2020-07-25  本文已影响0人  程序员ken

getBean

beanName转化

手动注册bean检测

检查父容器

依赖初始化

Singleton初始化

getSingleton方法

是否存在

bean创建

lookup-method检测
InstantiationAwareBeanPostProcessor触发
doCreateBean
创建(createBeanInstance)
MergedBeanDefinitionPostProcessor
属性解析
if (mbd.getResolvedAutowireMode() \== RootBeanDefinition.AUTOWIRE\_BY\_NAME ||

mbd.getResolvedAutowireMode() \== RootBeanDefinition.AUTOWIRE\_BY\_TYPE) {

MutablePropertyValues newPvs \= new MutablePropertyValues(pvs);

  

// Add property values based on autowire by name if applicable.

if (mbd.getResolvedAutowireMode() \== RootBeanDefinition.AUTOWIRE\_BY\_NAME) {

autowireByName(beanName, mbd, bw, newPvs);

}

  

// Add property values based on autowire by type if applicable.

if (mbd.getResolvedAutowireMode() \== RootBeanDefinition.AUTOWIRE\_BY\_TYPE) {

autowireByType(beanName, mbd, bw, newPvs);

}

  

pvs \= newPvs;

}

//设值

applyPropertyValues(beanName, mbd, bw, pvs);

}
属性设置
初始化
Object wrappedBean \= bean;

if (mbd \== null || !mbd.isSynthetic()) {

wrappedBean \= applyBeanPostProcessorsBeforeInitialization(wrappedBean, beanName);

}

  

invokeInitMethods(beanName, wrappedBean, mbd);

  

if (mbd \== null || !mbd.isSynthetic()) {

wrappedBean \= applyBeanPostProcessorsAfterInitialization(wrappedBean, beanName);

}

return wrappedBean;

}

getObjectForBeanInstance

Prototype初始化

beforePrototypeCreation

createBean

afterPrototypeCreation

总结

其它Scope初始化

根据socpe.get的注释,此方法如果找到了叫做beanName的bean,那么返回,如果没有,将调用ObjectFactory创建之。Scope的实现参考类图.

本文来源于:宋文超super,专属平台有csdn、思否(SegmentFault)、 简书、 开源中国(oschina),转载请注明出处。

上一篇 下一篇

猜你喜欢

热点阅读