【springboot】使用缓存

news/2025/1/15 14:03:31/

目录

1. 添加依赖

2. 配置缓存

3. 使用@EnableCaching注解开启缓存

4. 使用注解

        1. 配置缓存名称

        2. 配置缓存的键

        3. 移除缓存

5. 运行结果


1. 添加依赖

<!--        springboot缓存--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-cache</artifactId></dependency>
<!--        具体使用的缓存:caffeine--><dependency><groupId>com.github.ben-manes.caffeine</groupId><artifactId>caffeine</artifactId></dependency>

2. 配置缓存

        application.yml

spring:cache:type: caffeine
#    设置缓存的名字cache-names: rescaffeine:
#      设置缓存的初始容量和最大容量,过期时间spec: initialCapacity=100,maximumSize=500,expireAfterWrite=10m

        application.properties

spring.cache.type=caffeine
# 设置缓存的名字
spring.cache.cache-names=res
# 设置缓存的初始容量和最大容量,过期时间
spring.cache.caffeine.spec=initialCapacity=100,maximumSize=500,expireAfterWrite=10m

3. 使用@EnableCaching注解开启缓存

        在配置类上添加以下注解,开启缓存

@EnableCaching

4. 使用注解

        在需要缓存的方法上使用 @Cacheable 注解。@Cacheable 注解用于标记一个方法,使其返回值可以被缓存

        1. 配置缓存名称

        直接配置固定名称

java">@Cacheable(cacheNames = "固定名称", key = "key")

        动态获取

java">@Service
public class ProductService {@Cacheable(cacheNames = "#{@cacheNameProvider.getCacheName()}", key = "#productId")public Product getProductById(Long productId) {// 模拟从数据库获取数据return new Product(productId, "Product Name");}
}
//-----------------其他类--------------
@Component
public class CacheNameProvider {public String getCacheName() {// 动态生成缓存名称return "dynamicProducts";}
}

        2. 配置缓存的键

        配置固定值。

        配置值为方法参数。

        配置值为多个方法参数的拼接。

        3. 移除缓存

5. 运行结果

6. 遇到的问题(未解决)

        在使用的时候遇到一个问题,动态获取缓存名称的时候一直报了一个错误,用了很多方式没法解决,暂时记录下。

        错误代码。

        报错截图。


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

相关文章

Java 入门指南:Java 并发编程 —— Fork/Join 框架 实现任务的拆分与合并

Fork/Join Fork/Join 是Java并发编程中的一个框架&#xff0c;用于解决大型任务的并行执行问题。它于 Java 7中引入&#xff0c;旨在简化对多核处理器上可并行执行任务的开发。 Fork/Join 框架基于分治&#xff08;divide and conquer&#xff09;的设计思想。它将大型任务划…

Unet改进13:添加RepVGG||减少冗余计算和同时存储访问

本文内容:在不同位置添加RepVGG注意力机制 目录 论文简介 1.步骤一 2.步骤二 3.步骤三 4.步骤四 论文简介 我们提出了一种简单但功能强大的卷积神经网络结构,该结构具有类似vgg的推理时间主体,仅由3 3卷积和ReLU堆栈组成,而训练时间模型具有多分支拓扑结构。通过结构…

无人机之飞行速度篇

无人机的飞行速度是一个复杂且多变的参数&#xff0c;它受到多种因素的影响。以下是对无人机飞行速度及其影响因素的详细分析&#xff1a; 一、无人机飞行速度概述 无人机的飞行速度通常以其在不同飞行模式下的水平飞行速度来衡量&#xff0c;如平稳挡&#xff08;Cine&#x…

【微服务】接口的幂等性怎么设计?

一、什么是幂等&#xff1f; 幂等性&#xff1a;短时间内&#xff0c;对于相同输入的请求&#xff0c;无论进行多少次重复操作&#xff0c;都应该和单次调用的结果一致。 二、幂等问题产生的原因是什么&#xff1f;(或者说为什么需要实现幂等性?) 1、前端重复提交 在用户注…

算法day16|654.最大二叉树、617.合并二叉树、700.二叉搜索树中的搜索、98.验证二叉搜索树

算法day16|654.最大二叉树、617.合并二叉树、700.二叉搜索树中的搜索、98.验证二叉搜索树 654.最大二叉树617.合并二叉树1.额外申请空间&#xff08;失败&#xff09;2.不额外申请空间 700.二叉搜索树中的搜索98.验证二叉搜索树1.遍历后排序2.边遍历遍排序3.指针记录法 654.最大…

C语言——插入排序

先将序列的第1个记录看成是一个有序的子序列&#xff0c;然后从第2个记录逐个进行插入&#xff0c;直至整个序列有序为止。 #include <stdio.h> #include <stdlib.h> void insertion_sort(int *arr, int n) { for (int i 1; i < n; i) { int …

Android 11添加系统服务,并封装jar包供第三方应用使用

概述&#xff1a; 如果你是做技术支持&#xff0c;有没有遇到这种情况&#xff0c;客户既要实现具备系统权限的功能&#xff0c;但是呢&#xff0c;又不想把自己的应用做成系统应用。这时候你咋办。 我们可以添加一个具备系统权限的服务&#xff0c;不管前台的&#xff0c;还是…

Linux 常用命令 - hexdump 【以指定格式显示文件内容】

简介 hexdump 可以将指定文件或标准输入按照指定的格式进行输出&#xff0c;其可以用来查看任何文件的原始数据&#xff0c;在分析非文本文件的场景下非常有用。 使用方式 hexdump [-bcCdovx] [-e 指定格式] [-f 指定文件] [-n 长度] [-s 偏移] file ... hd [-bcdovx] [-e 指…