您现在的位置是:首页 > 正文

Spring Cache

2024-04-01 05:19:42阅读 1

1.Spring Cache介绍

Spring Cache是一个框架,实现了基于注解的缓存功能,只需要简单的加一个注解,就能实现缓存功能。
Spring Cache提供了一层抽象,底层可以切换不同的cache实现。具体就是通过CacheManager接口来统一不同的缓存技术。
CacheManager是spring提供的各种缓存技术抽象接口。
针对不同的缓存技术需要实现不同的CacheManager

2.Spring Cache常用注解

(1)EnableCaching   开启缓存注解功能(一般放在启动类上)

(2)Cacheable   在方法执行前spring先查看缓存中是否有数据,如果有数据,则直接返回缓存数据;若没有数据,调用方法
并将方法返回值放到缓存。

(3)CachePut    将方法的返回值放到缓存中

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

3.CachePut注解

    /**
     *CachePut:将方法的返回值放入缓存
     * value:缓存的名称
     * key:缓存的key,每个缓存名称下可以有多个key
     */
    @CachePut(value = "userCache",key = "#user.id")
    @PostMapping
    public User save(User user){
        userService.save(user);
        return user;
    }

4.CacheEvict注解

     /**
     *CachePut:清理指定缓存
     * value:缓存的名称
     * key:缓存的key,每个缓存名称下可以有多个key
     */
    @CacheEvict(value = "userCache",key = "#id")
    @DeleteMapping("/{id}")
    public void delete(@PathVariable Long id){
        userService.removeById(id);
    }

5.Cacheable

    /**
     *Cacheable:在方法执行前spring先查看缓存中是否有数据,如果有数据,则直接返回缓存数据;若没有数据,调用方法
     * 并将方法返回值放到缓存。
     * value:缓存的名称
     * key:缓存的key,每个缓存名称下可以有多个key
     * condition:条件,满足条件时才缓存数据
     */
    @Cacheable(value = "userCache",key = "#id",condition = "#result!=null")
    @GetMapping("/{id}")
    public User getById(@PathVariable Long id){
        User user = userService.getById(id);
        return user;
    }

网站文章

  • Linux下的UDP通信

    Linux下的UDP通信

    编写服务端和客户端,并进行UDP通信测试

    2024-04-01 05:19:01
  • k8s集群安装metrics-server(三)

    1.获取压缩包wget https://github.com/kubernetes-sigs/metrics-server/archive/v0.3.6.tar.gz2.版本选择metrics-ser...

    2024-04-01 05:18:55
  • Nodejs+vue校园论坛BBS系统w076f

    Nodejs+vue校园论坛BBS系统w076f

    本文尝试以B/S架构设计模式中的vue框架,nodejs语言为基础,通过必要的编码处理、BBS论坛系统整体框架、功能服务多样化和有效性的高级经验和技术实现方法,旨在完成一个快速、高效、便捷的BBS论坛...

    2024-04-01 05:18:48
  • Python实现GA遗传算法优化循环神经网络分类模型(LSTM分类算法)项目实战

    Python实现GA遗传算法优化循环神经网络分类模型(LSTM分类算法)项目实战

    Python实现GA遗传算法优化循环神经网络分类模型(LSTM分类算法)项目实战

    2024-04-01 05:18:04
  • Flask 学习笔记 分页

    Flask 学习笔记 分页

    今天开始是对Flask中分页的学习,以下是视图函数的代码:@main.route('/',methods=['GET','POST']) def ind...

    2024-04-01 05:17:51
  • CAD个人心得总结 最新发布

    CAD个人心得总结 最新发布

    通过合理使用图层管理,可以方便地对图形进行编辑和修改,同时也可以实现图形的隐藏和显示,提高设计的灵活性。6. 注意图形的组织和层次:在进行复杂的CAD设计时,要注意合理组织图形元素的层次结构,便于后续...

    2024-04-01 05:17:42
  • SpringMVC源码分析 —— 拦截器是何时调用的

    SpringMVC源码分析 —— 拦截器是何时调用的

    SpringMVC源码分析,拦截器是何时、以什么方式调用的?本文将进行详细说明环境准备笔者创建一个springboot的web项目,使用的springboot的版本是2.3.7.RELEASE对应的spring-web版本是5.2.12.RELEASE下面将对上面版本的springmvc源码进行分析。

    2024-04-01 05:16:58
  • java中线程同步(synchronized的用法)

    java中线程同步(synchronized的用法)

    多线程存在的问题1.多线程会造成共享资源数据环混乱。因为,每一个线程都有自己的内存。当一个线程从公共资源读取数据后,保存到了自己线程的内存中,然后才执行。这样如果多个线程同时读取公共资源的数据,而没有...

    2024-04-01 05:16:52
  • java解惑--谜题14:转义字符的溃败

    谜题14:转义字符的溃败 摘自《java解惑》一书,下载地址:http://download.csdn.net/detail/itismelzp/9407769 下面的程序使用了两个Unicode 的转义字符,它们是用其十六进制代码来表示 Unicode 字符。那么,这个程序会打印什么呢? public class EscapeRout{ public s

    2024-04-01 05:16:44
  • 高级会计职称计算机考什么,会计高级职称考哪些科目

    还不清楚会计高级职称考哪些科目的小伙伴,赶紧过来瞧瞧吧!下面由出国留学网小编为你精心准备了“会计高级职称考哪些科目 评审条件是什么”,本文仅供参考,持续关注本站将可以持续获取更多的资讯!会计高级职称考...

    2024-04-01 05:16:04