0%

Spring Bean缓存

主要设计的类DefaultSingletonBeanRegistryAbstractBeanFactory

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

public class DefaultSingletonBeanRegistry extends SimpleAliasRegistry implements SingletonBeanRegistry {

//...

/** Cache of singleton objects: bean name to bean instance. */
private final Map<String, Object> singletonObjects = new ConcurrentHashMap<>(256);

/** Cache of singleton factories: bean name to ObjectFactory. */
private final Map<String, ObjectFactory<?>> singletonFactories = new HashMap<>(16);

/** Cache of early singleton objects: bean name to bean instance. */
private final Map<String, Object> earlySingletonObjects = new ConcurrentHashMap<>(16);


}

Spring无法解决的循环依赖问题,当两个循环依赖的类的注入方式是构造器注入时则无法解决循环依赖问题,
因为在类初始化时将直接导致初始化失败,因为无法查询和创建需要被注入的依赖。