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。