缓存注解介绍
Posted lagoujiaoyu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了缓存注解介绍相关的知识,希望对你有一定的参考价值。
**1.@EnableCaching注解**
@EnableCaching是由spring框架提供的,springboot框架对该注解进行了继承,该注解需要配置在类上(在中,通常配置在项目启动类上),用于开启基于注解的缓存支持
**2.@Cacheable注解**
@Cacheable注解也是由spring框架提供的,可以作用于类或方法(通常用在数据查询方法上),用于对方法结果进行缓存存储。注解的执行顺序是,先进行缓存查询,如果为空则进行方法查询,并将结果进行缓存;如果缓存中有数据,不进行方法查询,而是直接使用缓存数据
? @Cacheable注解提供了多个属性,用于对缓存存储进行相关配置
| **属性名** | **说明** |
| ---------------- | --------------------------------------------------------- |
| value/cacheNames | 指定缓存空间的名称,必配属性。这两个属性二选一使用 |
| key | 指定缓存数据的key,默认使用方法参数值,可以使用SpEL表达式 |
| keyGenerator | 指定缓存数据的key的生成器,与key属性二选一使用 |
| cacheManager | 指定缓存管理器 |
| cacheResolver | 指定缓存解析器,与cacheManager属性二选一使用 |
| condition | 指定在符合某条件下,进行数据缓存 |
| unless | 指定在符合某条件下,不进行数据缓存 |
| sync | 指定是否使用异步缓存。默认false |
**执行流程&时机**
方法运行之前,先去查询Cache(缓存组件),按照cacheNames指定的名字获取,(CacheManager先获取相应的缓存),第一次获取缓存如果没有Cache组件会自动创建;
去Cache中查找缓存的内容,使用一个key,默认就是方法的参数,如果多个参数或者没有参数,是按照某种策略生成的,默认是使用KeyGenerator生成的,使用SimpleKeyGenerator生成key,SimpleKeyGenerator生成key的默认策略:
| 参数个数 | key |
| ---------- | --------------------- |
| 没有参数 | new SimpleKey() |
| 有一个参数 | 参数值 |
| 多个参数 | new SimpleKey(params) |
常用的SPEL表达式
| 描述 | 示例 |
| -------------------------- | ----------------------------------------------------- |
| 当前被调用的方法名 | #root.mathodName |
| 当前被调用的方法 | #root.mathod |
| 当前被调用的目标对象 | #root.target |
| 当前被调用的目标对象类 | #root.targetClass |
| 当前被调用的方法的参数列表 | #root.args[0] 第一个参数, #root.args[1] 第二个参数... |
| 根据参数名字取出值 | #参数名, 也可以使用 #p0 #a0 0是参数的下标索引 |
| 当前方法的返回值 | #result |
~~~~~~~~~~~~~~~~~~~~~~~~
学习让人快乐,学习更让人觉得无知!学了1个多月的《Java工程师高薪训练营》,才发现自己对每个技术点的认知都很肤浅,根本深不下去,立个Flag:每天坚持学习一小时,一周回答网上3个技术问题,把自己知道都分享出来。
以上是关于缓存注解介绍的主要内容,如果未能解决你的问题,请参考以下文章
博学谷学习记录超强总结,用心分享 | SpringCache常用注解介绍+集成redis
SpringSpring Cache 基于注解的缓存操作(包含使用 Redis 作为缓存技术)