SpringBoot之缓存@CachePut的使用

背景: 由于开发过程中总会涉及到一些业务需要实现数据信息的高效响应,而且对内存的要求又不是很大的前提下缓存是比较好的选择。

1.  SpringBoot为我们提供了一些高速开发的缓存其中@Cache就是比较官方化的,而且是符合JSP107规范。

关于具体的缓存介绍请看上篇博客

JSR107缓存规范(Java 规范提案)_gcglhd的博客-CSDN博客

2. 开发使用的步骤:

首先: SpringBoot的入门@Cache需要进行的配置和搭建请看博客:

SpringBoot2.0以上版本之缓存入门使用_gcglhd的博客-CSDN博客

然后:  最核心的SpringBoot的@CachePut是本次博客的核心。

3. @CachePut的说明,执行顺序,是先调用目标方法,然后再将数据存放在缓存中。(原理:就是把缓存重新更新,然后当再次获取缓存的内容时候,就会自动的进行新的缓存获取,所以也不需要进入函数内进行内容的获取)

    /**
     * @CachePut:即调用方法,有更新缓存的数据 修改数据库的数据同时跟新缓存。
     */

    /**
     * 1.运行时机先调用目标方法。
     * 2.将目标方法的结果缓存起来。
     * 3.在通过缓存获取数据的时候自动就是更新后的数据。
     */
  @Cacheable(cacheNames = {"emp"})  //当参数id的值大于0的时候才开启缓存。默认情况下缓存中存放的key为函数的参数。
    public Employee getEmp(Integer id) {
        System.out.println("要查询的用户Id为:" + id);
        Employee empById = employeeMapper.getEmpById(id);
        return empById;
    }
  
    /**
     * @CachePut:即调用方法,有更新缓存的数据 修改数据库的数据同时跟新缓存。
     */
    @CachePut(value = "emp",key = "#result.id")
    public Employee updateEmp(Employee employee) {
        System.out.println("进入更新数据库的操作!!"+employee);
        employeeMapper.updateEmp(employee);
        return employee;
    }
    //</editor-fold>

注意核心事项:

         Cache的存放有一定的规则那就是key值的选择,默认情况下是根据函数参数,比如上面第一个函数参数为Id的缓存,第二个函数的参数为employee,如果没有定义key,那么就会造成这个缓存信息会不相符,导致查询的缓存数据是失败的,没有更新。所以在上面我们进行定义了@CachePut的key值为返回结果的Id属性,刚好和上面一致,所以整个缓存可以正常的更新使用。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值