结合源码分析 Spring bean的生命周期

缘起

我们总是说起Spring的ioc容器管理bean,spring的这些被管理的bean也都有自己的生命周期. 于是我好奇的想知道Spring的这些bean的生命周期到底怎么管理这些bean的

分析

在【1】的源码10的第三行, 其实后面还有内容的——处理 scope为prototype的bean

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// Create bean instance.
if (mbd.isSingleton()) {
.... // 【1】中分析的,先从缓存的DefaultSingletonBeanRegistry.singletonObjects中拿,拿不到再创建(doCreateBean)
}

else if (mbd.isPrototype()) { // 如果是prototype的, 则根本不考虑从什么缓存中拿,直接创建,就像注释说的, 直接 create a new instance
// It's a prototype -> create a new instance.
Object prototypeInstance = null;
try {
beforePrototypeCreation(beanName);
prototypeInstance = createBean(beanName, mbd, args);
}
finally {
afterPrototypeCreation(beanName);
}
bean = getObjectForBeanInstance(prototypeInstance, name, beanName, mbd);
}

先简要分析到这了

参考

【1】https://yfsyfs.github.io/2019/06/13/spring-AOP-%E6%B3%A8%E8%A7%A3%E5%8E%9F%E7%90%86/