缓存注解介绍

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

阿里开源 JetCache 缓存框架介绍使用

SpringSpring Cache 基于注解的缓存操作(包含使用 Redis 作为缓存技术)

SpringSpring Cache 基于注解的缓存操作(包含使用 Redis 作为缓存技术)

SpringSpring Cache 基于注解的缓存操作(包含使用 Redis 作为缓存技术)