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();
    }

 

 

 

 

posted @ 2023-12-26 16:43  梁哲  阅读(35)  评论(0)    收藏  举报