栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringBoot高级--缓存--Spring缓存抽象

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringBoot高级--缓存--Spring缓存抽象



@Cacheable:触发缓存人口。
@CacheEvict:触发缓存驱逐。 缓存清楚
@CachePut:在不影响方法执行的情况下更新缓存。访问方法并更新缓存
@Caching:重新组合要应用于方法的多个缓存操作。
@CacheConfig:在类级别上共享一些常见的缓存相关设置

使用步骤

1、在springboot主类中加入**@EnableCaching**注解支持

2、在方法级别增加 @Cacheable 注解支持以启用缓存

Cacheable的几个属性
cacheNames/value:指定缓存组件的名字;将方法的返回结果放在哪个缓存中,是数组的方式,可以指定多个缓存;
key:缓存数据使用的key;可以用它来指定。默认是使用方法参数的值1-方法的返回值
编写SpEL; #id;参数id的值#a0、#pθ、#root.args[e]
keyGenerator: key的生成器; 可以自己指定key的生成器的组件id
key/keyGenerator:二选一使用
cacheManager:指定缓存管理器;或者cacheResol ver指定获取解析器
condition:指定符合条件的情况下才缓存;
condition = “#id>0”
condition = “#a0>1”: 第一个参数的值>1的时候才进行缓存
unless:否定缓存;当unless指定的条件为true,方法的返回值就不会被缓存;可以获取到结果进行判断
unless = "#result == null ”
unless = “#a0==2”:如果第一 个参数的值是2,结果不缓存;
sync:是否使用异步模式
注意:开启了异步就不支持unless

3、自动配置类CacheAutoConfiguration

包含以下这些类:
GenericCacheConfiguration
EhCacheCacheConfiguration
HazelcastCacheConfiguration
InfinispanCacheConfiguration
JCacheCacheConfiguration
CouchbaseCacheConfiguration
RedisCacheConfiguration
CaffeineCacheConfiguration
SimpleCacheConfiguration
NoOpCacheConfiguration

默认加载:SimpleCacheConfiguration
这个类注册了一个 ConcurrentMapCacheManager 缓存管理器

缓存管理器最主要功能就是根据缓存名字查询缓存对象
实现了CacheManager, BeanClassLoaderAware接口,定义一个缓存队列为
private final ConcurrentMap cacheMap = new ConcurrentHashMap<>(16);
可以获取和创建ConcurrentMapCache类型的缓存组件

ConcurrentMapCache组件最主要的逻辑就是这个lookup查询逻辑

我们看一下这个store是什么,估测是个存储对象,看一下吧


ok,看,是Map存储的

Cacheable的运行流程


@CacheEvict注解

@Caching注解

@CacheConfig注解

统一指定公共的缓存配置

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/677749.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号