Springboot中默认的缓存管理器:ConcurrentMapCacheManager
几个常用的注解:
1.@Cacheable 可缓存
该注解的属性有:
key的值可以通过两种方式来指定:1.SpEL表达式 2.keyGenetator来指定。(二选一)
第一种方式SpEL:
第二种方式keyGenetator:
需要编写一个配置类,并且构造一个keyGenerator装载成@Bean,注意返回bean的类型为
使用时的写法: keyGenerator = "bean的id"。
2.@CachePut缓存更新
在我们的业务方法更新完数据库后,我们想到的是缓存中的数据也进行同样的更新,此时我们就可以在该业务方法上加上该注解.使用方法同上面的差不多,但是有点区别的是:在我们更新完数据库的操作后,我们缓存需要同步更新数据,那这个数据是需要在完成数据库更新后返回的数据,所以我们的CacheNames/value 该怎么指定怎么指定,但是key是和返回的数据有关联的,比如是数据中的某个属性,所以我们需要这样使用:key = "#result.属性"。(返回的数据的某个属性)
3.@CacheEvict缓存驱逐
我们通过key指定要删除的缓存的key。key = "#a".
属性 :
1.AllEntries = false 默认是false ,如果指定为true的话,我们在删除某个缓存时,会把该cachedName下的所有的key-value全部删除。
2.beforeInvocation = false 默认是false,如果指定为true,是指在方法执行前便将缓存删除。
4.@Caching
可以通过该注解可以达到组合多个上述三个注解的作用。
5.@CacheConfig注解配置
该注解是放在类上的,目的是可以减少方法上注解的重复编写,比如有的时候我们一个业务代码中都使用的同一个CacheName 或者同一个key,这样我们就可以直接通过该注解标注在类上。