Spring Cache入门

        Spring Cache是一个框架,实现了基于注解的缓存功能,只需要简单地加一个注解,就能实现缓存功能。

一、Spring Cache提供了一层抽象,底层可以切换不同的缓存实现(只需要添加下载相关的jar包就可以切换不同的缓存实现),例如:

  • EHCache
  • Caffeine
  • Redis
<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-cache</artifactId>
        <version>2.7.3</version>
</dependency>

二、Spring Cache

 常用注解:{  @Cacheable(可放可取)@CachePut(只有可放进缓存)}

 三、实践

1、在启动类中加入@EnableCaching注解,其作用:开启缓存注解功能

@Slf4j
@SpringBootApplication
@EnableCaching//开启缓存注解功能
public class CacheDemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(CacheDemoApplication.class,args);
        log.info("项目启动成功...");
    }
}

2、在controller中,@Cacheput的使用,详解看代码

@RestController
@RequestMapping("/user")
@Slf4j
public class UserController {
    @Autowired
    private UserMapper userMapper;
    /*
    * 新增一个用户
    * */
    @PostMapping
    //生成 key value 于 缓存之中
    @CachePut(cacheNames = "userCache",key = "#user.id") //如果使用Spring Cache缓存数据,key的生成:userCache::2(常用)
    //@CachePut(cacheNames="userCache",key="#result.id")/对象导航
    //@CachePut(cacheNames "userCache",key "#p0.id")//p0指的就是user这个参数
    //@CachePut(cacheNames "userCache",key "#a0.id")//a0同上
    //@CachePut(cacheNames "userCache",key "#root.args[0].id")
    public User save(@RequestBody User user){
        userMapper.insert(user);
        return user;
    }
}

运行结果:

3、@Cacheable注解的使用((cacheNames = "userCache",key = "#id"))

    /*
    * 通过id查询用户
    * */
    @GetMapping
    //在方法执行前先查询缓存中是否有数据,如果有数据,则直接返回缓存数据;
    //如果没有缓存数据,调用方法  查找数据库的数据  并将方法返回值放到缓存中
    @Cacheable(cacheNames = "userCache",key = "#id")//key的生成:userCache::2
    public User getById(Long id){
        User user = userMapper.getById(id);
        return user;
    }

4、 @CacheEvict(将一条或多条数据从缓存中删除)

    @DeleteMapping
    @CacheEvict(cacheNames = "userCache",key = "#id")//key的生成:userCache::2
    public void deleteById(Long id){
        userMapper.deleteById(id);
    }


    @DeleteMapping("/delAll")
    @CacheEvict(cacheNames = "userCache",allEntries = true)//删除所有用: allEntries = true
    public void deleteAll(){
        userMapper.deleteAll();
    }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值