cacheable注解详解
时间: 2023-09-19 21:06:54 浏览: 50
`@Cacheable` 是 Spring Framework 中的一个注解,它可以用来标注方法或类,表示该方法或类的返回值可以被缓存起来,以提升系统的性能。
当一个方法或类被标注为 `@Cacheable` 后,Spring 会先从缓存中查找该方法或类的返回值,如果缓存中存在,则直接返回缓存中的结果,否则才会执行方法或类,并将结果缓存起来。缓存的实现可以是内存缓存、Redis 缓存等。
`@Cacheable` 注解有以下几个重要的属性:
- `value`:缓存的名称,可以指定多个,如 `@Cacheable(value={"cache1", "cache2"})`,默认为方法或类所在的包名。
- `key`:缓存的 key 值,可以使用 SpEL 表达式动态生成,如 `@Cacheable(key="'user_'+#id")`,其中 `#id` 表示方法的参数 id。
- `condition`:缓存的条件,只有满足条件的返回值才会被缓存,如 `@Cacheable(condition="#result != null")`,表示只有返回值不为 null 才会被缓存。
- `unless`:缓存的排除条件,如果满足排除条件,则不会被缓存,如 `@Cacheable(unless="#result.length() > 10")`,表示如果返回值长度大于 10,则不会被缓存。
需要注意的是,`@Cacheable` 注解只能用于方法或类上,并且被注解的方法或类必须是 public 的,否则无法被 AOP 代理,也就无法实现缓存功能。
相关问题
@cacheable参数详解
@Cacheable 是 Spring 框架提供的一个注解,用于标记方法的返回值可以被缓存起来,以提高方法的执行效率。当一个带有 @Cacheable 注解的方法被调用时,Spring 会首先检查缓存中是否存在该方法的返回值,如果存在,则直接从缓存中返回结果,而不执行该方法;如果缓存中不存在,则执行该方法,并将方法的返回值存入缓存。
@Cacheable 注解可以放在方法级别和类级别上,如果放在类级别上,则表示该类的所有方法的返回值都可以被缓存。在方法级别上使用 @Cacheable 注解时,可以通过设置不同的缓存名字来对不同的方法进行缓存。
@Cacheable 注解还可以指定缓存的 key,通过 SpEL 表达式来动态生成缓存的 key。这样可以根据不同的参数生成不同的缓存 key,从而实现更加精细化的缓存控制。
此外,@Cacheable 注解还支持设置缓存条件,通过设置条件表达式,可以控制方法是否执行缓存。例如,可以根据某个参数的值来判断是否进行缓存。
总结来说,@Cacheable 注解是一个非常有用的注解,可以帮助我们简化缓存的使用,并提高方法的执行效率。
@Cacheable注解的作用
@Cacheable注解的作用是用于声明性缓存。当在方法上添加@Cacheable注解时,可以将方法的返回值缓存起来,以便在后续对该方法的调用中直接返回缓存的结果,而不必执行方法的实际逻辑。这样可以提高系统的性能和响应速度。通过指定缓存的名称和缓存的键值等参数,可以对不同的方法进行不同的缓存配置。例如,在使用@Cacheable注解时,可以指定缓存的名称为"myCache",并以方法的参数作为缓存的键值。这样当调用该方法时,如果缓存中已存在以参数为键的结果,将直接返回缓存的值,否则将执行方法的实际逻辑,并将结果存储到缓存中。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [@Cacheable使用详解](https://blog.csdn.net/run65536/article/details/130823256)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]