1.启动缓存
@EnableCaching
1.自动配置:CacheAutoConfiguration
@Import({CacheAutoConfiguration.CacheConfigurationImportSelector.class})//导入缓存配置类
image.png
哪个配置类生效呢? 看每个配置类的生效条件,比如RedisCacheConfiguration
@Configuration
@AutoConfigureAfter({RedisAutoConfiguration.class})
@ConditionalOnBean({RedisTemplate.class})
@ConditionalOnMissingBean({CacheManager.class})
@Conditional({CacheCondition.class})
class RedisCacheConfiguration {...}
2.Cacheable 标注在检索性方法上比如get***();执行原理如下
1.从缓存中获取
2.缓存中若没有,则调用方法,并将方法执行的结果存储到缓存中.
主要参数:
- cacheNames/value: image.png
-
key或者keyGenerator 二选一:
image.png
image.png - cacheManager:指定缓存管理器,如下图中,指定ConcurrentHanshMap 或者 Redis
或者cacheResolver
- condition: 指定条件为True,则缓存
- unless: 指定条件为True,则不缓存.可以获取到结果进行判断,比如:unless="#result == null"
- sync:是否使用异步模式
网友评论