首页 > 其他分享 >【springboot】使用缓存

【springboot】使用缓存

时间:2024-09-05 18:53:27浏览次数:11  
标签:缓存 springboot 配置 spring cache caffeine 使用 注解

目录

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: res
    caffeine:
#      设置缓存的初始容量和最大容量,过期时间
      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. 配置缓存名称

        直接配置固定名称

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

        动态获取

@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. 遇到的问题(未解决)

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

        错误代码。

        报错截图。

标签:缓存,springboot,配置,spring,cache,caffeine,使用,注解
From: https://blog.csdn.net/BlackPudding_/article/details/141830832

相关文章

  • 基于SpringBoot的宿舍管理系统
    文章目录项目介绍主要功能截图:部分代码展示设计总结项目获取方式......
  • 基于springboot的乡村政务办公系统(11191)
     有需要的同学,源代码和配套文档领取,加文章最下方的名片哦一、项目演示项目演示视频二、资料介绍完整源代码(前后端源代码+SQL脚本)配套文档(LW+PPT+开题报告)远程调试控屏包运行三、技术介绍Java语言SSM框架SpringBoot框架Vue框架JSP页面Mysql数据库IDEA/Eclipse开发四、项......
  • 【SpringBoot】使用Nacos服务注册发现与配置管理
    前提:需要提前部署好nacos服务,这里可以参考我的文章:Windows下Nacos安装与配置0.版本信息SpringBoot3.2.8SpringCloud2023.0.1SpringCloudalibaba2023.0.1.0nacos2.3.2本地安装的nacos2.3.0       SpringBoot、SpringCloud、SpringCloudalibaba的版本对应可......
  • 【springboot】使用swagger生成接口文档
    1.添加依赖<dependency><groupId>org.springdoc</groupId><artifactId>springdoc-openapi-starter-webmvc-ui</artifactId><version>2.6.0</version></dependency>       这里我老是添加不上......
  • laravel singleton 单例模式使用
    laravelsingleton单例模式使用1、简介在Laravel中,singleton是用于将一个类注册为单例模式的服务,也就是说,整个应用程序生命周期内,Laravel只会实例化一次该服务。这个服务可以在多个地方共享同一个实例,而不是每次请求时都创建一个新的实例。2、使用场景当你希望某个类只......
  • 在 Vue3 中使用 CSS Modules 实现样式隔离
    在Vue3中使用CSSModules实现样式隔离随着构建现代前端应用的需要,样式的管理和隔离变得越来越重要。为了解决样式冲突和管理困难的问题,CSSModules应运而生。今天,我们将讨论如何在Vue3中使用CSSModules实现样式隔离,特别是在使用新的setup语法糖的情况下。什么......
  • 如何使用 Bittly 创建一个本地 HTTP 服务器
    Bittly支持在本地创建HTTP服务器。通过配置该服务器,可以根据匹配规则自动响应HTTP请求,并通过变量和脚本实现动态数据内容的响应。此外,Bittly的本地HTTP服务器还支持配置文档根目录,直接将指定路径作为Web目录进行访问,无需配置完整的HTTP服务器。Bittly的HTTP......
  • 第16篇 如何制作自己的安装程序--使用InnoSetupPE工具
    1.安装去官网下载最新版本:https://jrsoftware.org/isdl.php#stable2.进入应用主界面3.点击file》New【开始打包】直接next4.填写相关数据直接点next5.根据要求填写,然后直接next6.这里默认不改,然后直接next7.这里也默认不改,然后直接next8.这里为空,可以不填,然后......
  • 【正则表达式】非捕获组 (?: ... )的使用方法和必要性
    定义非捕获组,用(?:...)表示。这意味着它将匹配括号内的内容,但是不会将匹配的内容存储到内存中供后续引用。这对于那些我们想要作为一个整体处理,但是又不需要单独捕获其内容的情况非常有用。举例假设我们有一个字符串abc123def,并且我们想要匹配其中的数字,同时忽略其他部分......
  • Java项目: 基于SpringBoot+mysql蜗牛兼职网兼职平台管理系统(含源码+数据库+答辩PPT+
    一、项目简介本项目是一套基于SpringBoot+mysql蜗牛兼职网兼职平台管理系统包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。项目都经过严格调试,eclipse或者idea确保可以运行!该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用......