Spring Cache的介绍以及使用方法、常用注解

news/2024/11/17 20:18:10/

一、Spring Cache介绍

Spring Cache是一个框架,实现了基于注解的缓存功能,只需要简单地加一个注解,就能实现缓存功能.

Spring Cache提供了一层抽象,底层可以切换不同的cache实现。具体就是通过CacheManager接口来统一不同的缓存技术。
CacheManager是Spring提供的各种缓存技术抽象接口。

针对不同的缓存技术需要实现不同的CacheManager:

CacheManager描述
EhCacheCacheManager使用EhCache作为缓存技术
GuavaCacheManager使用Google的GuavaCache作为缓存技术
RedisCacheManager使用Redis作为缓存技术

二、Spring Cache常用注解

Spring Cache提供了一些常用的注解,用于控制缓存的行为。以下是几个常用的注解:

注解说明
@EnableCaching开启缓存注解功能
@Cacheable在方法执行前spring先查看缓存中是否有数据,如果有数据,则直接返回缓存数据,若没有数据,调用方法并将方法返回值放到缓存中
@CachePut表示将方法的返回值放到缓存中
@CacheEvict将一条或多条数据从缓存中删除
@Caching可以同时应用多个缓存相关的注解。

在spring boot项目中,使用缓存技术只需在项目中导入相关缓存技术的依赖包,
并在启动类上使用@EnableCaching开启缓存支持即可。

例如,使用Redis作为缓存技术,只需要导入Spring data Redis的maven坐标即可

示例代码:

@Service
public class UserService {@Autowiredprivate UserRepository userRepository;@Cacheable(value = "users", key = "#id")public User getUserById(Long id) {// 从数据库中获取用户信息return userRepository.findById(id);}@CachePut(value = "users", key = "#user.id")public User updateUser(User user) {// 更新用户信息到数据库return userRepository.save(user);}@CacheEvict(value = "users", key = "#id")public void deleteUserById(Long id) {// 从数据库中删除用户信息userRepository.deleteById(id);}@Caching(evict = {@CacheEvict(value = "users", key = "#id1"),@CacheEvict(value = "users", key = "#id2")})public void deleteUsers(Long id1, Long id2) {// 批量删除用户信息userRepository.deleteByIdIn(Arrays.asList(id1, id2));}
}

三、Spring Cache使用方式

  1. 配置缓存管理器(如 EhcacheManager):

    <bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager"><property name="cacheManager"><bean class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"><property name="configLocation" value="classpath:ehcache.xml"/></bean></property>
    </bean>
    
  2. 在需要缓存的方法上添加相应的注解,如 @Cacheable@CachePut@CacheEvict

  3. 在需要使用缓存的类或方法上加上 @EnableCaching 注解,启用缓存功能。

    @Configuration
    @EnableCaching
    public class CacheConfig {// 其他配置...@Beanpublic CacheManager cacheManager() {return new EhCacheCacheManager(ehCacheManager());}@Beanpublic net.sf.ehcache.CacheManager ehCacheManager() {// 配置 Ehcache 缓存管理器// ...}
    }
    

通过以上的简单配置和注解使用,我们就可以很方便地在 Spring 项目中引入缓存机制,并提升系统的性能和响应速度。


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

相关文章

将pdf转换成word怎么转换?掌握这几个转换方法就够了

将pdf转换成word怎么转换&#xff1f;将 PDF 转换成 Word 文档是一个常见的需求&#xff0c;我们需要编辑 PDF 文件中的文字内容&#xff0c;但是 PDF 文件并不方便直接编辑。下面介绍几个转换方法。 方法一&#xff1a;使用迅捷 PDF 转换器 这是一款专业的 PDF 转换工具&…

国产龙芯2k1000开发板运行SylixOS嵌入式实时系统--迅为电子

龙芯生态体系越来越完善&#xff0c;继RK3568开发板成功搭载SylixOS国产实时操作系统后&#xff0c;迅为的国产龙芯2K1000开发平台也可以流畅运行SylixOS国产实时操作系统了。 SylixOS 采用抢占式、多任务、硬实时的方式来设计整个操作系统。已广泛适用于电力、工业自动化、轨道…

【C#】并行编程实战:使用 Visual Studio 调试任务

并行编程可以提高应用程序的性能&#xff0c;但是调试起来会更困难&#xff0c;这一点在之前的章节中我们已经有了很直观的感受。对于程序而言&#xff0c;保证程序的正确性和保证性能同样重要。 本章将介绍可以在 Visual Studio 中的调试工具&#xff08;包括 Thread 窗口、Ta…

jmeter-断言

断言作用&#xff1a;让脚本自动化执行过程中&#xff0c;能够自动判定执行结果是否正确&#xff0c;需要添加断言 响应断言 添加方式&#xff1a;测试计划–》线程组–》HTTP请求–》(右键添加)断言–》响应断言 案例 请求:https://www.baidu.com 检查&#xff1a;让程序检查…

云端环境跑通BaseLine

云端环境跑通BaseLine 一、实验流程实践 1.报名 报名日期&#xff1a;2023年7月17日&#xff0c;参与AI夏令营第一期 彳 z h i 亍 c h u &#xff0c;都为第四声 \overset{zhi}{彳}\overset{chu}{亍}&#xff0c;都为第四声 彳zhi亍chu&#xff0c;都为第四声 怎么报名的&a…

MySQL 主从复制的认识 2023.07.23

一、理解MySQL主从复制原理 1、概念&#xff1a;主从复制是用来建立一个和 主数据库完全一样的数据库环境称为从数据库&#xff1b;主数据库一般是准实时的业务数据库。 2、作用&#xff1a;灾备、数据分布、负载平衡、读写分离、提高并发能力 3、原理图 4、具体步骤 (1) M…

uni-app:切换页面刷新,返回上一页刷新(onShow钩子函数的使用)

切换页面刷新&#xff1a;通过onShow()便可实现 返回上一页通过uni.navigateBack({delta: 1});实现 以返回上一页刷新为例 从B页面返回上一页到A页面 在A页面写入方法refreshHandler() methods: { // 执行刷新逻辑refreshHandler() {uni.request({url: getApp().globalData.…

Java面试题总结记录(3)—— Spring篇

1、什么是Spring&#xff1f; Spring 是个java企业级应用的开源开发框架。Spring主要用来开发Java应用&#xff0c;但是有些扩展是针对 构建J2EE平台的web应用。 Spring 框架目标是简化Java企业级应用开发&#xff0c;并通过 POJO为基础的编程 模型促进良好的编程习惯 2、你们项…