@Cacheable 其他属性|学习笔记

简介: 快速学习 @Cacheable 其他属性

开发者学堂课程【SpringBoot快速掌握 - 高级应用:@Cacheable其他属性】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/613/detail/9291


@Cacheable其他属性

其他几个属性:

cacheNames /value:指定缓存组件的名字;将方法的返回值放在哪个缓存中,是数组的方式,可以指定多个缓存;

key:缓存数据使用的 key;可以用它来指定。默认是使用方法参数的值1-方法的返回值。

编写 SpEL;#id;参数 id 的值 #aθ#pθ@#root.args[θ]key  

Generator:key 的生成器;

package com. atguigu. cache. config;

importorg.springframework . cache.  interceptor . KeyGenerator ;

import org.  springframework . context.  annotation . Bean;

importorg.springframework . context.  annotation .  Configuration ;

import java. lang. reflect. Method;

import java. util. Arrays;

@ Configuration

public class  MyCacheConfig {

@Bean(" myKeycenerator ")

public  KeyGeneratorkeyGenerator (){

return new  KeyGenerator (){

@Override

public Object generate(Object target, Method method, Object... params){return  

method.getName()+"["+Arrays. aslist(params).toString()+"]";

}

}

}

}

可以自己指定 key 的生成器的组件 id

key/ keyGenerator :二选一使用

cacheManager :指定缓存管理器;或者 cacheResolver 指定获取解析器

condition:指定符合条件的情况下才缓存;

, condition="#id>θ"

condition=“#aθ>1”:第一个参数的值>1的时候才进行缓存

如果查1号员工,发现并没有缓存;查询2号员工,第一次有打印,第二次没有打印说明没有方法进入

condition="#id>0"unless:否定缓存;当 unless 指定的条件为 truve,方法的返回值就不会被缓存;可以获取到结果进行判断 unless="#result==null"

unless=“#aθ==2”:如果第一个参数的值是2,结果不缓存

查询1号员工会打印,且语句发送;查询2号员工没有打印也没有语句发送说明没有缓存。

sync:是否使用异步模式

@paramid

ge return

@Cacheable(value={"emp"}, key="#root. methodName +"['+#id+"]'")) 这样就可以自定义 key

public Employee getEmp(Integer id){

System. out. print\n("査询"+id+"号员工");

Employee emp= employeeMapper . getEmpById (id);

return emp;

}

相关文章
|
4月前
@Autowired注解获取对象为null
@Autowired注解获取对象为null
42 0
|
4月前
|
缓存 NoSQL Java
Spring Cache之本地缓存注解@Cacheable,@CachePut,@CacheEvict使用
SpringCache不支持灵活的缓存时间和集群,适合数据量小的单机服务或对一致性要求不高的场景。`@EnableCaching`启用缓存。`@Cacheable`用于缓存方法返回值,`value`指定缓存名称,`key`定义缓存键,可按SpEL编写,`unless`决定是否不缓存空值。当在类上使用时,类内所有方法都支持缓存。`@CachePut`每次执行方法后都会更新缓存,而`@CacheEvict`用于清除缓存,支持按键清除或全部清除。Spring Cache结合Redis可支持集群环境。
239 6
|
9月前
|
缓存 Java Spring
Cacheable CacheEvict CachePut
Cacheable CacheEvict CachePut
31 0
|
JSON 数据格式
swagger参数注解,后台使用@RequestBody注解的实体类,但只需要传实体类中的一个属性
这样写的结果会是下面这个样子,导致出现两个参数,一个实体类传参类型是json格式,一个是注解中写的属性。
|
Java 关系型数据库 MySQL
如何使用@Value注解为bean的属性赋值呢
如何使用@Value注解为bean的属性赋值呢
|
缓存 Java 数据库
@CachePut |学习笔记
快速学习 @CachePut
|
缓存 Java 数据库
@ CacheEvict |学习笔记
快速学习 @ CacheEvict
102 0
|
Java Spring 容器
请举例说明@Qualifier注解?
请举例说明@Qualifier注解?
请举例说明@Qualifier注解?
|
缓存 NoSQL Java
Spring系列缓存注解@Cacheable @CacheEvit @CachePut 使用姿势介绍
Spring在3.1版本,就提供了一条基于注解的缓存策略,实际使用起来还是很丝滑的,本文将针对几个常用的注解进行简单的介绍说明,有需要的小伙伴可以尝试一下
242 0
Spring系列缓存注解@Cacheable @CacheEvit @CachePut 使用姿势介绍
|
Java Spring 容器
Spring注解(七):使用@Value对Bean进行属性赋值
在配置文件中可以通过property 标签对Bean进行赋值:
424 0
Spring注解(七):使用@Value对Bean进行属性赋值