Spring Cache常用方法
使用Spring Cache需要注入maven依赖,并在Spring Boot启动类上添加 @EnableCaching 注释
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-cache</artifactId> </dependency>
@SpringBootApplication @EnableTransactionManagement @EnableCaching // 开启Spring Cache @Slf4j public class SkyApplication { public static void main(String[] args) { SpringApplication.run(SkyApplication.class, args); log.info("server started"); } }
常用方法:
1. @Cacheable--用于缓存数据,缓存这个方法的返回值,若已经有对应key的缓存数据,则不在执行方法,直接返回缓存中的相应数据 -- 通常用在查询方法上
@GetMapping("/list") @ApiOperation("根据分类id查询套餐") @Cacheable(cacheNames = "setmealCache",key = "#categoryId") public Result<List<Setmeal>> list(Long categoryId) { Setmeal setmeal = new Setmeal(); setmeal.setCategoryId(categoryId); setmeal.setStatus(StatusConstant.ENABLE); List<Setmeal> list = setmealService.list(setmeal); return Result.success(list); }
2. @CachePut -- 会把方法的返回值put到缓存里面缓存起来,与Cacheable不同的是,该注解会保证方法运行完毕,然后进行数据缓存 -- 通常用于插入方法
/** * 新增套餐 * @param setmealDTO * @return */ @ApiOperation("新增套餐") @PostMapping() @CachePut(cacheNames = "setmealCache",key = "#setmealDTO.categoryId") public Result insert(@RequestBody SetmealDTO setmealDTO){ log.info("新增套餐:{}",setmealDTO); setmealService.insert(setmealDTO); return Result.success(); }
3. @CacheEvict -- 根据key清除缓存数据 设置allEntries = true 则清除所有缓存数据 -- 常用于删除方法和更改方法
@CacheEvict(cacheNames = "setmealCache",allEntries = true) public Result update(@RequestBody SetmealDTO setmealDTO){ log.info("更改套餐信息:{}",setmealDTO); setmealService.update(setmealDTO); return Result.success(); }