27.Spring如何避免在并发下获取不完整的Bean?
Spring如何避免在并发下获取不完整的Bean?
1、为什么获取不到完整的Bean?
我们知道, 如果spring容器已经加载完了, 那么肯定所有bean都是完整的了, 但如果, spring没有加载完, 在加载的过程中, 构建bean就有可能出现不完整bean的情况
2、如何解决读取到不完整bean的问题.
其实, 之所以出现这样的问题, 原因就在于, 第一个bean还没有被创建完, 第二个bean就开始了. 这是典型的并发问题. 针对这个问题, 其实,我们加锁就可以了,解决方案如下:
双重检查锁
为什么一级缓存不加到锁里面:性能:避免已经创建好的Bean阻塞等待
代码演示
第一: 将整个创建过程加一把锁
/**
* 获取bean, 根据beanName获取
*/
public static Object getBean(String beanName) throws