緩存(五)緩存工作原理—@Cacheable運行流程


 
 
 
1.如果引用了緩存,緩存的自動配置就會生效。
CacheAutoConfiguration就是緩存的自動配置類。
2.這個類通過import導入CacheManagerCustomizers和CacheConfigurationImportSelector
3.CacheConfigurationImportSelector調用selectImports方法導入緩存要用的一些組件的,源碼如下:

 

他導入了很多緩存的配置類:

 

GenericCacheConfiguration
JCacheCacheConfiguration
EhCacheCacheConfiguration
HazelcastCacheConfiguration用分布式的緩存組件要用的配置
InfinispanCacheConfiguration
RedisCacheConfiguration
GuavaCacheConfiguration
SimpleCacheConfiguration
NoOpCacheConfiguration
 
4.不是所有的配置類都會生效:
這些配置類上都會條件判斷,滿足這些條件才會生效。
SpringBoot默認使用的是SimpleCacheConfiguration,即是用Concurrent1MapCacheManager來實現緩存。
5.SimpleCacheConfiguration給容器注入了一個ConcurrentMapCacheManager類型的緩存管理器。

 

ConcurrentMapCacheManager里面有很多的Cache組件。放在ConcurrentMap里面,以名字為key。

 

如果指定了cache組件的名字:

 

那么程序會先把這個cache加載出來:
(1.)判斷這個cache是否存在
(2.)如果不存在就加鎖再次確認一遍
(3.)還是不存在就創建ConcurrentMapCache類型的cache,並put到concurrentMap中

 

6.ConcurrentMapCache類型的cache里面有一個名字和一個放緩存數據的ConcurrentMap類型的store。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM