【springboot】使用缓存

news/2024/9/17 3:05:03/ 标签: spring boot, 后端, java, 缓存

目录

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 指…

Leetcode每日刷题之155.最小栈

1.题目解析 本题是实现一个栈并且要实现其中的插入、删除、返回栈顶元素、返回最小元素的函数&#xff0c;这里主要的难点就是返回最小元素的函数&#xff0c;如果我们直接遍历&#xff0c;那么时间复杂度就是O(N)&#xff0c;但是题目要求我们需要在常数时间也就是O(1)的时间复…

Docker必备命令集合,让你轻松驾驭容器化

Docker作为现代化应用程序的部署和管理平台&#xff0c;已经成为开发者和运维工程师的得力工具。但对于新手而言&#xff0c;面对众多的命令和参数&#xff0c;有时会感到困惑。本文将为你总结一组常用的Docker命令&#xff0c;助你快速上手并高效使用这一强大工具。 1. 基础命…

Qt数字化信息通讯调制解调

对于数字化信息通讯调制解调&#xff0c;Qt本身并不直接提供调制解调的功能&#xff0c;但是可以通过Qt的网络编程接口&#xff0c;结合相关的算法和硬件设备来实现。例如&#xff0c;可以通过Qt的信号处理库来实现数字信号的调制和解调算法&#xff0c;或者通过串口通信与外部…

word中怎么快速选中光标之前或之后的全部内容?

在Word中&#xff0c;快速选中光标之后的全部内容的快捷键&#xff1a;Ctrl Shift End&#xff1b; 在Word中&#xff0c;快速选中光标之前的全部内容的快捷键&#xff1a;Ctrl Shift Home。 在Word中&#xff0c;选取的快捷键如下。 一、选定整个文本&#xff1a; 1&#…

微信小程序认证和备案

小程序备案的流程一般包括以下步骤‌&#xff1a; 准备备案所需材料‌&#xff1a;通常需要提供‌营业执照、法人的‌身份证、两个‌手机号和一个邮箱等资料。 ‌1 ‌登录‌微信公众平台‌&#xff1a;作为第一次开发微信小程序的服务商&#xff0c;需要通过微信公众平台申请…

掌握Git分支管理策略:让团队协作更高效

在现代软件开发过程中&#xff0c;版本控制系统&#xff08;VCS&#xff09;是不可或缺的一部分。Git作为目前最流行的分布式版本控制系统之一&#xff0c;为开发者提供了强大的工具集来管理代码变更历史。然而&#xff0c;仅仅掌握Git的基本命令并不足以应对大型项目和团队协作…

中间代码例题

答案&#xff1a;D 知识点&#xff1a; 中间代码是一种简单且含义明确的记号系统&#xff0c;可以有若干形式&#xff0c;它们的共同特征是与机器无关。 最常见的中间代码有&#xff1a;后缀式&#xff0c;语法树&#xff0c;三地址码&#xff0c;四元式 这些往往是数据&am…

HarmonyOS开发实战( Beta5版)Stack组件实现滚动吸顶效果实现案例

介绍 本示例介绍运用Stack组件以构建多层次堆叠的视觉效果。通过绑定Scroll组件的onScroll滚动事件回调函数&#xff0c;精准捕获滚动动作的发生。当滚动时&#xff0c;实时地调节组件的透明度、高度等属性&#xff0c;从而成功实现了嵌套滚动效果、透明度动态变化以及平滑的组…

linux中普通用户免密切换root

在 Linux 中如果要实现不输入密码直接切换到 root 权限&#xff0c;可以通过配置 sudoers 文件来实现。但这种方式有一定安全风险&#xff0c;使用时需谨慎。 以下是具体步骤&#xff1a; 1.以当前有 sudo 权限的用户身份打开终端。 2.使用以下命令编辑 /etc/sudoers 文件&…

WordPress安装指南:主题、插件和最佳实践

WordPress是世界上最流行的内容管理系统&#xff08;CMS&#xff09;&#xff0c;因其易用性和灵活性而备受欢迎。本文将指导您完成WordPress的安装过程&#xff0c;介绍一些常用的主题和插件&#xff0c;并分享一些重要的注意事项。 1. WordPress安装 步骤1&#xff1a;准备…

数字时代,寻找新的生意增长点之前要做什么准备?

要做好最基础也最繁复的数据管理。 在竞争日益激烈的快消市场中&#xff0c;企业面临前所未有的挑战与压力。在这种高压环境下&#xff0c;数字化转型不再仅仅是选择&#xff0c;而是企业探索新的业务增长点、保持竞争优势的关键战略。然而&#xff0c;随着企业数字化进程的加…

MATLAB进行天线阵列方向图综合

摘要&#xff1a;本次推文将介绍如何利用MATLAB的Sensor Array Analyzer进行天线阵列的方向图综合。 1. 阵列方向图综合理论 对于均匀平面阵列而言&#xff0c;其阵因子公式可以写成 当阵列是三角网格布置或者圆环阵时&#xff0c;《ANTENNA THEORY ANALYSIS AND DESIGN》等相…