在工作中,遇到了一段代码,业务上是进行登录时输入错误代码的次数的记录和清零。因为之前没用过@Cacheable、@CacheEvict、@CachePut这三个注释,所以花了点功夫学习了一下,在这里记录一下
@Override
//value:缓存名
//keyCode:缓存的key
//condition:判断执行条件
//allEntries:是否需要清除缓存中的所有元素。默认为false,表示不需要
//beforeInvocation:当我们指定为true时,Spring会在调用该方法之前清除缓存中的指定元素
@CacheEvict(value = "login_count", key = "#keyCode", condition="判断条件", allEntries=true, beforeInvocation=true)
public void cleanByKey(String keyCode) {
log.info("清除缓存中的数据");
}
@Override
//value:缓存名
//keyCode:缓存的key
//condition:判断执行条件
@CachePut(value = "login_count", key = "#keyCode", condition="判断条件")
public int updateCount(String keyCode,int count) {
log.info("将返回的结果作为value,将键值对存入缓存");
return count;
}
@Override
//只读事务:从这一点设置的时间点开始(时间点a)到这个事务结束的过程中,其他事务所提交的数据,该事务将看不见!(查询中不会出现别人在时间点a之后提交的数据)
@Transactional(readonly = true)
//value:缓存名
//keyCode:缓存的key
//condition:判断执行条件
@Cacheable(value = "login_count", key = "#keyCode", condition="判断条件")
public int selectCount(String keyCode) {
log.info("Spring会在其被调用后将其返回值缓存起来,以保证下次利用同样的参数来执行该方法时可以直接从缓存中获取结果,而不需要再次执行该方法");
log.info("也就是说,调用这个方法以后,只会针对执行此方法之前的缓存状态进行操作");
return 0;
}



