Spring框架中的三級緩存是指用于緩存BeanDefinition的三個ConcurrentHashMap容器,分別為singletonObjects、earlySingletonObjects和singletonFactories。
singletonObjects:存放已經完全初始化的單例Bean對象。在第一次創建Bean時,會將Bean的實例放入該緩存中。
earlySingletonObjects:存放已經提前初始化但尚未完全初始化的單例Bean對象。在創建Bean時,如果需要解決循環依賴問題,會將正在創建的Bean實例暫時放入該緩存中。
singletonFactories:存放已經提前初始化但尚未完全初始化的單例Bean的工廠對象。在創建Bean時,如果需要解決循環依賴問題,會將正在創建的Bean的工廠對象暫時放入該緩存中。
這三個緩存的作用是為了解決Spring中的循環依賴問題。當創建Bean時,如果發現存在循環依賴,會先從緩存中獲取相應的Bean實例或工廠對象,而不會再次創建新的實例,從而避免了循環依賴的問題。