Spring Cache(缓存框架)

news/2025/1/12 0:49:58/

学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。各位小伙伴,如果您:
想系统/深入学习某技术知识点…
一个人摸索学习很难坚持,想组团高效学习…
想写博客但无从下手,急需写作干货注入能量…
热爱写作,愿意让自己成为更好的人…

文章目录

  • 一、Spring Cache是什么?
  • 二、常用注解
  • 三、使用步骤
    • 1.导入依赖
    • 2.@CachePut的使用
    • 3.@Cacheable的使用
    • 4.@CacheEvict的使用
    • 5.@EnableCaching的使用
  • 总结


一、Spring Cache是什么?

Spring Cache是一个框架,实现了基于注解的缓存功能,只需要简单地加一个注解,就能实现缓存功能。
Spring Cache提供了一层抽象,底层可以切换不同的缓存实现,例如:

  • EHCache
  • Caffeine
  • Redis

二、常用注解

在这里插入图片描述

三、使用步骤

1.导入依赖

Spring Cache缓存框架的maven导入:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-cache</artifactId>
</dependency>

Spring Cache缓存中间件的导入:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

总体pom文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.3</version><relativePath/></parent><groupId>com.itheima</groupId><artifactId>springcache-demo</artifactId><version>1.0-SNAPSHOT</version><properties><maven.compiler.source>11</maven.compiler.source><maven.compiler.target>11</maven.compiler.target></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><scope>compile</scope></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.20</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.76</version></dependency><dependency><groupId>commons-lang</groupId><artifactId>commons-lang</artifactId><version>2.6</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-cache</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.2.0</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.2.1</version></dependency><dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-spring-boot-starter</artifactId><version>3.0.2</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>2.7.3</version></plugin></plugins></build>
</project>

2.@CachePut的使用

@CachePut:将方法的返回值放到缓存中
案例代码:

    @PostMapping//@CachePut(cacheNames = "userCache",key = "#user.id")@CachePut(cacheNames = "userCache",key = "#result.id")public User save(@RequestBody User user){userMapper.insert(user);return user;}

其中#这种写法是spring规范的。
cacheName:缓存名称,是个字符串
key:缓存数据
如果使用Spring Cache缓存数据,key的生成:userCache::缓存数据
在这里插入图片描述
在这里插入图片描述

3.@Cacheable的使用

@Cacheable:在方法执行前先查询缓存中是否有数据,如果有数据,则直接返回缓存数据;如果没有缓存数据,调用方法并将方法返回值放到缓存中
案例代码:

    @GetMapping@Cacheable(cacheNames = "userCache",key = "#id")//key的生成:userCache::10public User getById(Long id){User user = userMapper.getById(id);return user;}

4.@CacheEvict的使用

@CacheEvict:将一条或多条数据从缓存中删除
清理一条数据案例代码:

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

清理多条数据(cacheNames定义的名字下的所有数据都删除)案例代码:

	@DeleteMapping("/delAll")@CacheEvict(cacheNames = "userCache",allEntries = true)public void deleteAll(){userMapper.deleteAll();}

5.@EnableCaching的使用

@EnableCaching:开启缓存注解功能,通常加在启动类上
案例代码:

@SpringBootApplication
@EnableTransactionManagement //开启注解方式的事务管理
@Slf4j
@EnableCaching//开启缓存注解功能
public class SkyApplication {public static void main(String[] args) {SpringApplication.run(SkyApplication.class, args);log.info("server started");}
}

总结

以上就是Spring Cache(缓存框架)的相关知识点,希望对你有所帮助。
积跬步以至千里,积怠惰以至深渊。时代在这跟着你一起努力哦!


http://www.ppmy.cn/news/1246832.html

相关文章

获得文件MD5——校验完整性 window 和 Linux下操作

目录 引出window下获得文件MD5Linux下获得文件MD5单个文件整个目录下所有文件检查MD5 总结 引出 1.Windows 10 自带了一个命令行程序 certutil可以 获取文件的 MD5 值&#xff1b; 2.Linux下md5sum命令获得文件MD5值&#xff1b; window下获得文件MD5 Windows 10 自带了一个命…

代码随想录二刷 | 哈希表 | 总结篇

代码随想录二刷 &#xff5c; 哈希表 &#xff5c; 总结篇 理论基础哈希表经典题目数组作为哈希表set作为哈希表map作为哈希表 理论基础 一般来说哈希表都是用来快速判断一个元素是否出现集合里。 对于哈希表&#xff0c;要知道哈希函数和哈希碰撞在哈希表中的作用。 哈希函…

基于SSM框架的合同服务管理系统设计与实现

基于SSM框架的合同服务管理系统的设计与实现 摘要&#xff1a;当今社会&#xff0c;各行各业都离不开计算机软件的推广&#xff0c;销售&#xff0c;运营各方面&#xff0c;有些中小型企业没有技术与能力开发和维护一款软件来运营&#xff0c;这时催生很多软件外包公司的产生。…

丽晶酒店及度假村打造绮丽之境“美食实验室”中国市场首秀

于重庆丽晶酒店以艺术与美食的碰撞演绎“对比之美”&#xff0c;感官之华 2023年11月28日&#xff0c;中国上海 ——基于对当下消费趋势的敏锐洞察&#xff0c;洲际酒店集团旗下奢华品牌丽晶酒店及度假村近年来不断焕新&#xff0c;以崭新形象缔造现代奢华的旅居体验。作为丽晶…

Oracle(2-7)Instance and Media Recovery Structures

文章目录 一、基础知识1、体系结构详解2、Database Files 数据库文件3、Database Other Files 其他数据文件4、Dynamic Views 动态视图5、Large Pool6、DB Buffer Cache,DBWn7、Configuring Tablespaces 配置表空间8、Redo Log Buffer, LGWR 二、基础操作1、查看数据库动态视图…

Linux的软件安装

Linux的软件安装 1、rpm软件安装包 RPM&#xff08;RedHat Package Manager&#xff09;安装管理 ​ 这个机制最早是由Red Hat开发出来,后来实在很好用,因此很多 distributions&#xff08;发行版&#xff09;就使用这个机制来作为软件安装的管理方式 。包括Fedora,CentOS,S…

【黑马程序员】——微服务全套——Nacos安装指南

1.Windows安装 开发阶段采用单机安装即可。 1.1.下载安装包 在Nacos的GitHub页面&#xff0c;提供有下载链接&#xff0c;可以下载编译好的Nacos服务端或者源代码&#xff1a; GitHub主页&#xff1a;GitHub - alibaba/nacos: an easy-to-use dynamic service discovery, c…

JavaScript 表达式

JavaScript 表达式 目录 JavaScript 表达式 一、赋值表达式 二、算术表达式 三、布尔表达式 四、字符串表达式 表达式是一个语句的集合&#xff0c;计算结果是个单一值。 在JavaScript中&#xff0c;常见的表达式有4种&#xff1a; &#xff08;1&#xff09;赋值表达式…