码迷,mamicode.com
首页 > 其他好文 > 详细

缓存注解介绍

时间:2020-07-01 20:22:55      阅读:80      评论:0      收藏:0      [点我收藏+]

标签:getc   数列   多个参数   new   管理   使用方法   targe   相关配置   行数据   

 **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个技术问题,把自己知道都分享出来。

缓存注解介绍

标签:getc   数列   多个参数   new   管理   使用方法   targe   相关配置   行数据   

原文地址:https://www.cnblogs.com/lagoujiaoyu/p/13221124.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!