Spring Cache框架基于注解的缓存功能

       使用 Spring Cache 框架需要进行相应的依赖配置。在 Spring Boot 中,可以通过 Maven 或者 Gradle 等构建工具来导入相应的依赖包。 先在启动类上使用 @EnableCaching 注解来启用 Spring 的注解驱动缓存管理功能。

        在SpringCache中提供了很多缓存操作的注解,常见的是以下的几个:

注解说明
@EnableCaching开启缓存注解功能,通常加在启动类上
@Cacheable在方法执行前先查询缓存中是否有数据,如果有数据,则直接返回缓存数据;如果没有缓存数据,调用方法并将方法返回值放到缓存中
@CachePut将方法的返回值放到缓存中
@CacheEvict将一条或多条数据从缓存中删除

 

@Cacheable: 该注解可以标注在方法上,表明该方法的返回值可以被缓存。当一个被@Cacheable 注解的方法被调用时,Spring 会首先检查缓存中是否存在相应的数据,如果存在则直接返回缓存的数据,否则会执行方法中的代码,并将返回结果放入缓存中。它支持以下属性:

(1) value:指定使用的缓存名称,多个缓存名称可以用逗号隔开。

(2) key:指定缓存的 key 值。其中 SpEL 表达式可以用来计算 key,比如 "#param" 表示使用方法中的 param 参数作为 key。

(3) condition:指定缓存的条件,只有满足该条件的方法调用才会缓存。例如:condition = "#result != null" 表示只有当方法返回结果不为 null 时才缓存该结果。

示例代码:

/**
 * condition:条件,满足条件时才缓存数据
 * unless:满足条件则不缓存
 */
@Cacheable(value = "userCache", key = "#userId")
public User getUserById(int userId) {
    //从数据库中查询用户
    User user = userDao.getUserById(userId);
    if (user == null) {
        //抛出异常或者返回错误信息
        throw new RuntimeException("User not exist");
    }
    return user;
}

@CachePut: 该注解可以标注在方法上,用于更新缓存。与 @Cacheable 注解不同的是,@CachePut 注解标注的方法总是会被执行,并将方法的返回值更新到缓存中。它支持以下属性:

(1) value:缓存的名称。

(2) key:缓存的 key 值。

(3) condition:更新缓存的条件,只有满足该条件的方法调用才会更新缓存。

示例代码:

@CachePut(value = "userCache", key="#user.id")
public User updateUser(User user) {
    userDao.update(user);
    return user;
}

@CacheEvict: 该注解可以标注在方法上,用于删除缓存。一般用于在更新或者删除操作后清空缓存,避免脏数据和脏缓存的问题。它支持以下属性:

(1) value:缓存的名称。

(2) key:缓存的 key 值。

(3) condition:删除缓存的条件,只有满足该条件的方法调用才会删除缓存。

示例代码:

@CacheEvict(value = "userCache", key = "#userId")
public void deleteUserById(int userId) {
    userDao.deleteUserById(userId);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值