30、springboot——缓存之JSR107——@CacheEvict的使用④
* @CacheEvict 缓存清除
* key:指定要清除数据的key
* allEntries = true : 把指定缓存组件中的缓存全部清除;指定了这个key也就不用指定了
* beforeInvocation = true : 缓存的清除是否在方法执行之前执行
* 默认是清除缓存在方法执行之后执行;
* 配置为true时不管执行方法过程中是否出现异常在执行方法之前缓存都会会清除
举例应用:
在上一节的基础上service添加删除方法(同时按规则清除缓存)
1、删除指定key对应的缓存数据
@CacheEvict(value = "emp",key = "#id") public void del(Integer id){ System.out.println("del:"+ id); //employeeMapper.deleteEmpById(id); }
controller添加方法
@GetMapping("/delEmp") public String deleteEmployee(Integer id){ employeeService.deleteEmp(id); return "success"; }
操作步骤:假设同时查询1,2两个员工,然后删除1,再去查2,依然不会调用数据库;因为key指定了要清除的哪个缓存
2、allEntries = true : 把指定缓存组件中的缓存全部清除;配置了这个key也就不用配置了
@CacheEvict(value = "emp",allEntries = true) public void del(Integer id){ System.out.println("del:"+ id); //employeeMapper.deleteEmpById(id); }
操作步骤:假设同时查询1,2两个员工,然后删除1,再去查2,会调用数据库,因为emp中的缓存在调用这个delete方法之后就全被清除了