浅谈Spring Boot之缓存处理

devtools/2024/11/23 2:32:11/

在Spring Boot中处理缓存,可以通过以下几个步骤来实现:

1、添加依赖

首先,需要在项目的pom.xml文件中添加spring-boot-starter-cache依赖,以启用Spring Boot的缓存支持。

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

2、开启缓存管理

在配置类或启动类上添加@EnableCaching注解,以开启缓存管理功能。

java">@Configuration
@EnableCaching
public class CacheConfig {// 缓存配置
}

3、配置缓存管理器

可以通过实现CacheManager接口或使用CacheManagerCustomizer接口来自定义缓存管理器的行为。例如,使用ConcurrentMapCacheManager作为缓存管理器。

java">@Configuration
public class CacheManagerConfig {@Beanpublic CacheManager cacheManager() {return new ConcurrentMapCacheManager("cache1", "cache2");}
}

4、使用缓存注解:Spring Boot支持多种缓存注解,包括@Cacheable@CachePut@CacheEvict,用于控制方法级别的缓存行为。

  • @Cacheable:触发缓存填充。如果缓存中没有数据,则执行方法并将结果存入缓存

java">@Cacheable(cacheNames = "cacheName", key = "#key")
public Object someMethod(String key) {// 方法逻辑
}

  • @CachePut:更新缓存而不干扰方法执行。

java">@CachePut(cacheNames = "cacheName", key = "#key")
public Object someMethod(String key) {// 方法逻辑
}

  • @CacheEvict:触发缓存失效。

java">@CacheEvict(cacheNames = "cacheName", key = "#key")
public void someMethod(String key) {// 方法逻辑
}

5、配置特定缓存提供者

如果需要使用特定的缓存提供者,如Redis、Caffeine等,可以通过设置spring.cache.type属性来指定。

spring.cache.type=redis

6、自定义缓存配置

对于不同的缓存提供者,如Redis、Caffeine等,可以通过定义特定的配置类来自定义缓存的行为。例如,对于Redis,可以定义RedisCacheManagerBuilderCustomizer来自定义缓存的TTL(生存时间)。

java">@Configuration
public class RedisCacheConfig {@Beanpublic RedisCacheManagerBuilderCustomizer redisCacheManagerBuilderCustomizer() {return builder -> builder.withCacheConfiguration("cache1", RedisCacheConfiguration.defaultCacheConfig().entryTtl(Duration.ofSeconds(10))).withCacheConfiguration("cache2", RedisCacheConfiguration.defaultCacheConfig().entryTtl(Duration.ofMinutes(1)));}
}


http://www.ppmy.cn/devtools/136181.html

相关文章

Flutter:SlideTransition位移动画,Interval动画延迟

配置vsync&#xff0c;需要实现一下with SingleTickerProviderStateMixinclass _MyHomePageState extends State<MyHomePage> with SingleTickerProviderStateMixin{// 定义 AnimationControllerlate AnimationController _controller;overridevoid initState() {super.…

Spring:IoC/DI加载properties文件

Spring框架可以通过Spring的配置文件完成两个数据源druid和C3P0的配置&#xff08;Spring&#xff1a;IOC/DI配置管理第三方bean&#xff09;&#xff0c;但是其中包含了一些问题&#xff0c;我们来分析下: 这两个数据源中都使用到了一些固定的常量如数据库连接四要素&#xf…

Python CSV文档自动化操作详解

在数据处理和分析中,CSV(Comma-Separated Values)文件是一种常见的格式。Python提供了强大的工具来操作CSV文件,实现自动化的数据处理任务。本文将详细介绍如何使用Python进行CSV文档的自动化操作,包括读取、写入、修改和分析CSV文件。 目录 一、CSV 文件格式简介 二、使…

SparkSQL的执行过程:从源码角度解析逻辑计划、优化计划和物理计划

SparkSQL的执行过程可以分为以下几个阶段&#xff1a;从用户的SQL语句到最终生成的RDD执行&#xff0c;涵盖逻辑计划、优化计划和物理计划。以下是详细的源码角度解析&#xff1a; 1. 解析阶段&#xff08;Parsing&#xff09; SQL语句解析&#xff1a;Spark 使用 Catalyst 引…

机器学习极简史

机器学习的发展还不到100年&#xff0c;在这几十年的时间里&#xff0c;不同的时间阶段产生了不同的流派&#xff0c;抢占一时风头。但随着基础物理技术的进步&#xff0c;部分流派也慢慢归于历史。但它们的思想&#xff0c;当时面临的问题&#xff0c;却给后续的机器学习人们&…

计算机网络-Python通信

1、socket 套接字&#xff08;Socket&#xff09;是通信的基石&#xff0c;是支持TCP/IP协议的网络通信的基本操作单元。最早是应用于unix系统的一种通信模式&#xff0c;unix系统下的所有操作均是面向文件&#xff0c;Socket的通信模式也是基于文件操作&#xff0c;客户端和服…

贴代码框架PasteForm特性介绍之image

简介 PasteForm是贴代码推出的 “新一代CRUD” &#xff0c;基于ABPvNext&#xff0c;目的是通过对Dto的特性的标注&#xff0c;从而实现管理端的统一UI&#xff0c;借助于配套的PasteBuilder代码生成器&#xff0c;你可以快速的为自己的项目构建后台管理端&#xff01;目前管…

Elasticsearch开启认证及kibana密码登陆

Elasticsearch不允许root用户运行,使用root用户为其创建一个用户es,为用户es配置密码,并切换到es用户。 adduser elastic passwd elastic su elasticElasticsearch(简称ES)是一个基于Lucene的搜索服务器。它提供了一个分布式、多用户能力的全文搜索引擎,基于RESTful web…