SpringBoot2.X学习(三):缓存

spring cache(一)介绍&注解式编程 项目中使用最多的缓存技术就是Redis,用Redis就可以实现了,为什么需要使用spring cache?先看下我们使用缓存步骤:(1)查寻缓存中是否存在数据,如果存在则直接返回结果(2)如果不存在则查询数据库,查询出结果后将结果存入缓存并返回结果(3)数据更新时,先更新数据库(4)然后更新缓存,或者直接删除缓存可以看到逻辑都差不多,这样就出现大量重复的代码,而且缓存与业务耦合较深。则解决了这个问题,它利用AOP。 阅读详情

一、Cache配置注解详解

  1. @CacheConfig:主要用于配置该类中会用到的一些共用的缓存配置。在这里@CacheConfig(cacheNames = "users"):配置了该数据访问对象中返回的内容将存储于名为users的缓存对象中,我们也可以不使用该注解,直接通过@Cacheable自己配置缓存集的名字来定义。
  2. @Cacheable:配置了findByName函数的返回值将被加入缓存。同时在查询时,会先从缓存中获取,若不存在才再发起对数据库的访问。该注解主要有下面几个参数:
    1. value、cacheNames:两个等同的参数(cacheNames为Spring 4新增,作为value的别名),用于指定缓存存储的集合名。由于Spring 4中新增了@CacheConfig,因此在Spring 3中原本必须有的value属性,也成为非必需项了
    2. key:缓存对象存储在Map集合中的key值,非必需,缺省按照函数的所有参数组合作为key值,若自己配置需使用SpEL表达式,比如:@Cacheable(key = "#p0"):使用函数第一个参数作为缓存的key值,更多关于SpEL表达式的详细内容可参考官方文档
    3. condition:缓存对象的条件,非必需,也需使用SpEL表达式,只有满足表达式条件的内容才会被缓存,比如:@Cacheable(key = "#p0", condition = "#p0.length() < 3"),表示只有当第一个参数的长度小于3的时候才会被缓存,若做此配置上面的AAA用户就不会被缓存,读者可自行实验尝试。
    4. unless:另外一个缓存条件参数,非必需,需使用SpEL表达式。它不同于condition参数的地方在于它的判断时机,该条件是在函数被调用之后才做判断的,所以它可以通过对result进行判断。
    5. keyGenerator:用于指定key生成器,非必需。若需要指定一个自定义的key生成器,我们需要去实现
    6. org.springframework.cache.interceptor.KeyGenerator接口,并使用该参数来指定。需要注意的是:该参数与key是互斥的
    7. cacheManager:用于指定使用哪个缓存管理器,非必需。只有当有多个时才需要使用
    8. cacheResolver:用于指定使用那个缓存解析器,非必需。需通过org.springframework.cache.interceptor.CacheResolver接口来实现自己的缓存解析器,并用该参数指定。
  3. @CachePut:配置于函数上,能够根据参数定义条件来进行缓存,它与@Cacheable不同的是,它每次都会真实调用函数,所以主要用于数据新增和修改操作上。它的参数与@Cacheable类似,具体功能可参考上面对@Cacheable参数的解析
  4. @CacheEvict:配置于函数上,通常用在删除方法上,用来从缓存中移除相应数据。除了同@Cacheable一样的参数之外,它还有下面两个参数:
    1. allEntries:非必需,默认为false。当为true时,会移除所有数据
    2. beforeInvocation:非必需,默认为false,会在调用方法之后移除数据。当为true时,会在调用方法之前移除数据。

二、缓存管理

@Autowired
    private CacheManager cacheManager;

三、配置

第一步:在pom.xml中引入cache依赖,添加如下内容:

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

第二步:在Spring Boot主类中增加@EnableCaching注解开启缓存功能,如下:

@EnableCaching
@SpringBootApplication
public class Chapter51Application {

	public static void main(String[] args) {
		SpringApplication.run(Chapter51Application.class, args);
	}

}

第三步:在数据访问接口中,增加缓存配置注解,如:

@CacheConfig(cacheNames = "users")
public interface UserRepository extends JpaRepository<User, Long> {

    @Cacheable
    User findByName(String name);

}

四、缓存管理

在Spring Boot中通过@EnableCaching注解自动化配置合适的缓存管理器(CacheManager),Spring Boot根据下面的顺序去侦测缓存提供者:(当我们不指定具体其他第三方实现的时候,Spring Boot的Cache模块会使用ConcurrentHashMap来存储。)

  • Generic
  • JCache (JSR-107) (EhCache 3, Hazelcast, Infinispan, and others)
  • EhCache 2.x
  • Hazelcast
  • Infinispan
  • Couchbase
  • Redis
  • Caffeine
  • Simple

 

【SpringBoot高级篇】SpringBoot集成cache(LinkedHashMap)本地缓存 SpringBoot整合cacheSpring Boot与缓存一、JSR107二、Spring缓存抽象三、几个重要概念&缓存注解搭建基本环境导入数据库文件 创建出employee表PomymljavaBean封装数据DepartmentEmployee整合MyBatis操作数据库DepartmentMapperEmployeeMapper业务逻辑DeptServiceEmployeeServicecontrollerDeptControllerEmployeeController启动类快速体验缓存不 阅读详情

相关推荐

SpringBoot 2.x 整合 redis 做缓存

SpringBoot 2.x 整合 redis 做缓存 SpringBoot 2.0在今年3月份正式发布,公司新起的项目中就使用了SpringBoot 2.0,相比1.0还是有比较多的改动。SpringBoot 自2.0起不再支持jdk1.8以下的版本,jdk1.8中引入的default关键字,使接口可以提供方法的默认实现,SpringBoot 2.0中大量使用了该特性,因此在刚从1.0转为...

sy793314598的博客 3万+

SpringBoot缓存注解@CacheConfig, @CachePut, @CachePut , @CacheEvict 使用

开启缓存注解 java类配置: @Configuration @EnableCaching public class AppConfig { } @CacheConfig 一个类中可能会有多个缓存操作,而这些缓存操作可能是重复的。这个时候可以使用@CacheConfig (@CacheConfig is a class-level annotation that allows to s...

大鱼物联 2万+

Spring : 缓存相关注解@EnableCaching、@CacheConfig、@Cacheable、@Caching

1.美图 2.概述 缓存相关注解 解释 @EnableCaching 开启缓存注解的支持 @CacheConfig 用于统一制定一些配置参数,这样在其他缓存注解里面就不用重复指定 @Cacheable 如果之前已经有缓存数据值直接返回缓存数据,否则执行方法,缓存方法的返回结果 @CachePut 能够根据方法的请求参数对其结果进行缓存,和 @Cacheable 不同的是...

九师兄 6245

【日积月累】SpringBoot 通过注解@CacheConfig @Cacheable @CacheEvict @CachePut @Caching使用缓存

Spring在3.1版本,就提供了一条基于注解的缓存策略,实际使用起来还是很丝滑的,本文将针对几个常用的注解进行简单的介绍说明,有需要的小伙伴可以尝试一下@CacheConfig:常用于类级别的注解,用于统一配置类缓存的公共属性@Caching:可以在一个类或方法同时使用多个缓存相关注解,灵活配置缓存策略@Cacheable:用于标记一个类或方法,当被标记对象被访问,会先去缓存中查询相应的结果,如果存在则返回,不存在则指向方法@CacheEvict :用于从缓存中移除数据。

qq_43238568的博客 3793

基于openwrt平台搭建局域网技术验证之四

1、测试目的 验证l2tp客户端模式的可行性。 提供vpn-l2tp模式的客户端功能。 2、参考资料 参考链接1:https://www.lucktang.com/191.html 3、测试过程 测试过程需要用到的资源: 路由器俩个 win7系统电脑俩台 ③ 交换机一个 ④ 网线三根 测试组网如下图所示: 组网说明: R0公司路由器 S1 交换机 R1 路由器1 R2 路由器2 PC1 个人电脑1 PC2 个人电脑2 (R0) lan口接(S1)...

caofengtao1314的专栏 1960

基于YOLO-world训练模型的完整教程:从数据准备到微调训练

本文提供了YOLO-world模型训练的完整教程,涵盖从环境配置到微调训练的全流程。首先介绍了YOLO-world项目的安装与配置步骤,包括依赖安装和CUDA环境设置;接着详细说明了数据集的准备方法,包括COCO格式数据集的组织结构和自定义数据集的类别定义;然后阐述了配置文件的修改要点,包括超参数调整和数据集路径设置;最后讲解了训练命令的使用方法及常见问题的解决方案。本教程旨在帮助读者快速掌握YOLO-world模型的训练技能,适用于计算机视觉领域的研究人员和开发者。

FJN110的博客 1108

springboot2.x 的 RedisCacheManager设置缓存失效时间

由于最近项目中需要使用redis做缓存并修改其失效时间,使用的是springboot2.x来搭建的项目。 看了看网上的一些教程,但是大多数教程都是基于1.x的版本来讲解的,但是springboot2.x之后发生了一些变动,网上找一些资料不太容易。 下面是springboot1.x的版本使用ReidsCacheManager来配置缓存过期时间的方法: @Bean public Cache...

qq_16860417的博客 1万+

手把手教你学Simulink实例--基于simulink搭建起一个基础的矩阵变换器仿真模型

矩阵变换器(Matrix Converter, MC)是一种直接将交流电源转换为另一频率和幅值的交流电源的电力电子设备,它不需要中间的直流环节。这种变换器通过控制一组双向开关来实现对输入电压的精确控制,从而产生所需的输出电压波形。Simulink提供了强大的仿真环境,可以用于设计、分析和验证基于矩阵变换器的电源系统。

MHD0815的博客 337

springboot2.x版本redis缓存学习

springboot2.x版本redis缓存学习 在springboot1.x版本redis缓存学习的基础上,学习扩展2.x版本的更改 添加依赖 和1.x版本一样 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter...

那年花下月如雪 800

idea出现 EXCEPTION_ACCESS_VIOLATION (0xc0000005) 的解决方法

idea启动的时候出现如下问题,以为没啥事,就索性关闭 后面再打开idea的时候发现直接闪退,之后打开其他软件,直接蓝屏

码农研究僧的博客 4813

ArcGIS实验教程——实验十七:缓冲区分析(Buffer Analysis)

【实验描述】缓冲区(Buffer)是为了识别某一地理实体对周围地物的影响而在其周围建立的一定宽度多边形区域,缓冲区分析(Buffer Analysis)是用来确定不同地理要素的空间临近性或接近程度的一种分析方法。作为GIS的空间分析方法之一,缓冲区分析的应用范围特别广泛,常用于分析矢量实体对周围的影响。例如,工厂排放的废水废气所影响的空间范围等等。 一、缓冲区的基本概念 1、缓冲区 是地理空间目标的一种影响范围或服务范围。 2、缓冲区分析 指根据分析对象的点、线、面实体,自动建立它们周围一定距离的带

智慧空间实验室 1万+

springboot2.x 的 RedisCacheManager

原文:https://blog.csdn.net/s297485987/article/details/84350728 redis介绍 Redis是目前业界使用最广泛的内存数据存储。相比memcached,Redis支持更丰富的数据结构,例如hashes, lists, sets等,同时支持数据持久化。除此之外,Redis还提供一些类数据库的特性,比如事务,HA,主从库。可以说Redis兼具了缓...

qh870754310的博客 1万+

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的商品识别系统(深度学习+UI界面+训练数据集+Python代码)

随着新零售和智能仓储的快速发展,商品识别技术成为计算机视觉领域的重要研究方向。本文详细介绍了基于YOLO系列算法的商品识别系统的完整实现方案,涵盖算法原理、数据集构建、模型训练、系统集成和可视化界面开发。通过对比YOLOv5到YOLOv8各版本性能差异,我们构建了一个高效、准确且用户友好的商品识别系统,并提供完整的代码实现。

YOLO 283

SpringBoot2.x 缓存---注解方式、整合RedisCluster

SpringBoot2.x 缓存---注解方式、整合RedisCluster

Autumn_bell的博客 2075

使用微信小程序开发制作一个简单的在线问答应用

以上就是一个简单的在线问答小程序的开发过程。其中包括前端界面的布局和逻辑,后端接口的设计和实现,以及部署和测试的步骤。通过以上步骤,你可以自己尝试开发一个类似的在线问答应用。

2401_85258012的博客 791

【VMware】win 10:VMware 15 虚拟机安装 win 7 系统

目录 一、准备虚拟机 二、win7 ghost ISO镜像文件下载 三、VMware新建虚拟机 四、VMware安装win7 五、解决vmware虚拟机屏幕没有适应窗口全屏问题 一、准备虚拟机 查看我的另一博文:【VMware】VMware Workstation Pro15 虚拟机永久激活破解安装教程 二、win7 ghost ISO镜像文件下载 百度网盘下载地址:点击前往下载...

顾三殇 —— 博客空间(软件测试) 11万+

spring boot学习(十三)SpringBoot缓存(EhCache 2.x 篇)

在 Spring Boot中,通过@EnableCaching注解自动化配置合适的缓存管理器(CacheManager),Spring Boot根据下面的顺序去侦测缓存提供者: * Generic * JCache (JSR-107) * EhCache 2.x * Hazelca

FunriLy 1万+

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

SpringBoot2.x系列教程汇总-从入门到精通

因为优快云没有分类归纳博客的功能,所以特写本帖汇总SpringBoot2.x系列教程,方便大家查阅! SpringBoot2.x系列教程01--史前文明之Spring简介 SpringBoot2.x系列教程02--史前文明之Spring发展史 SpringBoot2.x系列教程03--新纪元之SpringBoot初相见 SpringBoot系列教程04--新纪元之SpringBoot环境......

一一哥 1万+

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

SpringBoot 2.x 整合redis 作为缓存

SpringBoot 2.x 整合redis 作为缓存使用 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。 新的改变 我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客: 全新的界面设计 ,将会带来全新的写作体验; 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样

yf992151915的博客 413

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Spring Boot 2.x基础教程:使用集中式缓存Redis

之前我们介绍了两种进程内缓存的用法,包括Spring Boot默认使用的ConcurrentMap缓存以及缓存框架EhCache。虽然EhCache已经能够适用很多应用场景,但是由于EhCache是进程内的缓存框架,在集群模式下时,各应用服务器之间的缓存都是独立的,因此在不同服务器的进程间会存在缓存不一致的情况。即使EhCache提供了集群环境下的缓存同步策略,但是同步依然是需要一定的时间,短暂的缓存不一致依然存在。 在一些要求高一致性(任何数据变化都能及时的被查询到)的系统和应用中,就不能再使用EhCac

程序猿DD 4179

SpringBoot 整合 Ehcache 2.x 缓存

整合步骤如下: 添加依赖 <!-- cache starter --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-cache</artifactId> </depen...

siriusol的博客 645

Java后端学习日记(四):Springboot 2.X 整合Redis作为数据缓存

专栏目录 Java后端学习日记(一):第一个Springboot应用——Hello World! Java后端学习日记(二):POJO的基本概念,编写,转化和简化 Java后端学习日记(三):Springboot整合Mybatis-Plus 项目源码同步更新中 前言 上一期中我们整合了Mybatis-Plus,对数据库进行CRUD,这一期我们来讲讲数据缓存 如果能用内存查找代替磁盘IO查找,那么效率就会高快几十到上百倍 常用的内存型数据库有Memcached,Redis和mongoDB,本文我们选择Red

Yuc0114的博客 542

SpringBoot 学习笔记_缓存 —— Ehcache 2.x

SpringBoot 学习笔记_缓存 —— Ehcache 2.x 声明: 本次学习参考 《SpringBoot + Vue 开发实战》 · 王松(著) 一书。 本文的目的是记录我学习的过程和遇到的一些问题以及解决办法,其内容主要来源于原书。 如有侵权,请联系我删除 Spring 3.1 开始对缓存提供支持,核心思路对方法的缓存,当开发者调用一个方法时,将方法中的参数/返回值作为key/value缓存起来,当再次调用该方法时,如果缓存中有数据,就直接从缓存获取,否则再去执行方法。但是,Spring 中并

新青年1号 282

Springboot2.x使用redis作为缓存

一、Springboot2.x关于配置redis作为缓存。 基本配置如下: (1)在application.properties文件中 spring.redis.database=2 //第几个数据库,由于redis中数据库不止一个 spring.redis.host=localhost // 也可指定为127.0.0.1 spring.redis.port=6379 ...

174

SpringBoot2.x拥抱本地缓存之王Caffeine

作者:超级小豆丁来源:http://www.mydlq.club/article/56/环境配置:JDK 版本:1.8Caffeine 版本:2.8.0SpringBoot 版本:2.2.2.RELEASE一、本地缓存介绍缓存在日常开发中启动至关重要的作用,由于是存储在内存中,数据的读取速度是非常快的,能大量减少对数据库的访问,减少数据库的压力。之前介绍过 Redis 这种 NoSql 作为缓存组件,它能够很好地作为分布式缓存组件提供多个服务间的缓存,但是 Redis 这种还是需要网络开销,增加时耗。本地缓

CC77778的博客 1422
上一篇: SpringBoot2.X学习(三):JSR-303请求参数校验
下一篇: SpringCloud(一):简介
life is ftc
博客等级 码龄9年 19粉丝 111原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值