ITPub博客

首页 > 应用开发 > Java > Spring Cache 解析

Spring Cache 解析

Java 作者:whisperrr 时间:2021-08-12 15:32:02 0 删除 编辑

  一. 要学Spring Cache第一步学:SpEL 表达式

  SpEL有三种用法,一种是在注解@Value中;一种是XML配置;最后一种是在代码块中使用Expression。

  1 //@Value能修饰成员变量和方法形参

  //#{}内就是表达式的内容

  @Value("#{表达式}")

  public String arg;

  3 public static void main(String[] args) {

  //创建ExpressionParser解析表达式

  ExpressionParser parser = new SpelExpressionParser();

  //表达式放置   大连无痛人流医院  http://www.bhbyby.net/  

    Expression exp = parser.parseExpression("表达式");

  //执行表达式,默认容器是spring本身的容器:ApplicationContext

  Object value = exp.getValue();}

  spring cache 用第二类方式


  二 .相关的注解 :

  1. 主要注解:@Cacheable(value=”dicCollege”,key =CacheConstant.KEY_DIC_COLLEGE), {注意:就是redies存储的key格式为dicCollege::CacheConstant.KEY_DIC_COLLEGE )}

  //spring boot代码为:

  @Cacheable(value = “dicCollege”,key =CacheConstant.KEY_DIC_COLLEGE)

  public ResultJson list(@RequestBody PageWeb pageWeb){

  }

  这个注释的意思是,当调用这个方法的时候,会从redies里一个名叫 dicCollege加key字段的缓存中查询。

  如果没有,则执行实际的方法(即查询数据库),并将执行的结果存入缓存中,否则返回缓存中的对象。

  这里的缓存中的 key 就是入参的参数对象的相对于字段。即使自己写入的相应字段。可以用sql表达式加自己需要的字符串连接

  我的CacheConstant.KEY_DIC_COLLEGE等于 'dicCollege-'+#pageWeb.pageNum+'-'+#pageWeb.pageSize+'-'+#pageWeb.params.getCollegeName()

  及存入redies的值为:

  1 null 参数分别为pageWeb的三个内部数: ’#pageWeb.pageNum','#pageWeb.pageSize'',‘#pageWeb.params.getCollegeName()‘

  再次调用时,如果没有调用增删改,就可以直接从第三方redies调用。

  2. 主要注解:@CacheEvict(value ="dicCollege",allEntries = true)

  @CacheEvict 注释来标记要清空缓存的方法,当这个方法被调用后,即会清空缓存。

  一般用于增删改 ,形式一般为:@CacheEvict(value = “dicCollege”,allEntries = true)

  3 @CachePut 注释,这个注释可以确保方法被执行,同时方法的返回值也被记录到缓存中,实现缓存与数据库的同步更新(不常用)


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70005147/viewspace-2786629/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2021-08-11

  • 博文量
    24
  • 访问量
    13090