springboot缓存运行原理

一、spring boot缓存原理:

1、自动配置类:CacheAutoConfiguration,类中导入了缓存配置类:

在这里插入图片描述

2、当容器中配置了哪个缓存组件进去,那个缓存的配置类就会被注入,默认SimpleCacheConfiguation会被匹配上。
3、SimpleCacheConfiguation向容器中注册了一个CacheManager:ConcurrentMapCacheManager
当redis配置进来后,默认的RedisCacheManager会被注入进来,而默认的ConcurrentMapCacheManager会失效。
4、getCache()方法可以获取和创建ConcurrentMapCache缓存组件 ConcurrentMapCache的作用是将数据保存到ConcurrentMap中,spring boot默认将数据保存到ConcurrentMap中,作为缓存。

二、@Cacheable注解的运行流程:

缓存的可以的生成策略:
key(默认为方法参数)默认使用SimpleKeyGenerator生成的
   SimpleKeyGenerator的生成key的默认策略:
     1>如果没有参数,key=new SimpleKey();
     2>如果有参数,key=参数的值;
     3>如果有多个参数,key=new SimpleKey(params);

流程:

1、目标方法运行之前,先去查询Cache(缓存组件),按照cacheName指定的名字进行获取

(CacheManager先获取对应的缓存),第一次获取缓存时,如果没有Cache组件会自动创建。

2、去Cache查找缓存(ConcurrentMapCache的lookup方法)的内容,使用key查询。
3、如果没有查到缓存,就调用目标方法。
4、将目标方法返回的结果放进缓存中。
总结:@Cacheable标注的方法,在方法执行之前先去检查缓存中是有此数据,默认按照参数的值作为key查询缓存,如果没有就执行方法并将结果放入到缓存里,再调用方法时,就可以使用缓存中的数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值