spring三级缓存其实就是三个map
public class DefaultSingletonBeanRegistry extends SimpleAliasRegistry implements SingletonBeanRegistry {
private final Map<String, Object> singletonObjects = new ConcurrentHashMap(256);
private final Map<String, ObjectFactory<?>> singletonFactories = new HashMap(16);
private final Map<String, Object> earlySingletonObjects = new HashMap(16);
加了final修饰的map不能重新赋值引用
private final Map map = new HashMap()
Map map1 = new HashMap()
// 无法做出如下操作,因为map是被final修饰的
map = map1
三级缓存获取顺序
单例的获取顺利是singletonObjects ——》earlySingletonObjects ——》singletonFactories 这样的三级层次。