1. @Cacheable的作用
缓存使用步骤:@Cacheable这个注解,用它就是为了使用缓存的。所以我们可以先说一下缓存的使用步骤:
- 开启基于注解的缓存,使用 @EnableCaching 标识在 SpringBoot 的主启动类上。
- 标注缓存注解即可
第一步:开启基于注解的缓存,使用 @EnableCaching 标注在 springboot 主启动类上
//开启基于注解的缓存
@EnableCaching
@EnableRyFeignClients
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
public class ZfjgAuthApplication {
public static void main(String[] args) {
SpringApplication.run(ZfjgAuthApplication.class, args);
}
}
第二步:标注缓存注解
@Repository
public interface DeviceMapper {
@Cacheable(cacheNames = "DeviceDO.deviceId")
DeviceDO get(String deviceId);
@CacheEvict(cacheNames = "DeviceDO.deviceId", key = "#record.deviceId")
int insert(DeviceDO record);
}
注:这里使用 @Cacheable 注解就可以将运行结果缓存,以后查询相同的数据,直接从缓存中取,不需要调用方法。
2.常用属性说明
下面介绍一下 @Cacheable 这个注解常用的几个属性:
- cacheNames/value :用来指定缓存组件的名字
- key :缓存数据时使用的 key,可以用它来指定。默认是使用方法参数的值。(这个 key 你可以使用 spEL 表达式来编写)
- keyGenerator :key 的生成器。 key 和 keyGenerator 二选一使用
- cacheManager :可以用来指定缓存管理器。从哪个缓存管理器里面获取缓存。
- condition :可以用来指定符合条件的情况下才缓存
- unless :否定缓存。当 unless 指定的条件为 true ,方法的返回值就不会被缓存。当然你也可以获取到结果进行判断。(通过 #result 获取方法结果)
- sync :是否使用异步模式。