Springboot使用@Cacheable注解实现数据缓存
创始人
2024-03-03 05:16:01
0

        本文介绍如何在Springboot中通过@Cacheable注解实现数据缓存。在每次调用添加了@Cacheable注解的方法(需要缓存功能的方法)时,Spring 会检查指定参数的指定目标方法是否已经被调用过,如果有就直接从缓存中获取方法调用后的结果,如果没有就调用方法并缓存结果后返回给用户。下次调用直接从缓存中获取。

1、添加 @EnableCaching

        使用 @EnableCaching 标识在 SpringBoot 的主启动类上,开启基于注解的缓存。

@EnableCaching
public class Application {public static void main(String[] args) {SpringApplication.run(Application .class, args);}
}

2、添加@Cacheable

  在需要缓存的方法上添加@Cacheable注解。以后查询相同的数据,直接从缓存中取,不需要调用方法。

@Cacheable(value = "areaTreeData")
public CommonResult>> queryTreeData(Long pId, Long lv) {Map map = new HashMap<>();map.put("state", 1);List> list = getTreeData(map, pId, lv);return new CommonResult<>(list);
}

注意:

1、返回的数据类型必须支持序列化或实现了Serializable接口,否则数据没法缓存。

2、只有直接调用该方法才能缓存,不能通过类中的其他方法来调用。

3、常用属性说明

  • cacheNames/value :用来指定缓存组件的名字

  • key :缓存数据时使用的 key,可以用它来指定。默认是使用方法参数的值。(这个 key 你可以使用 spEL 表达式来编写)

  • keyGenerator :key 的生成器。 key 和 keyGenerator 二选一使用

  • cacheManager :可以用来指定缓存管理器。从哪个缓存管理器里面获取缓存。

  • condition :可以用来指定符合条件的情况下才缓存

  • unless :否定缓存。当 unless 指定的条件为 true ,方法的返回值就不会被缓存。当然你也可以获取到结果进行判断。(通过 #result 获取方法结果)

  • sync :是否使用异步模式。

4、@CacheEvict注解

        @CachEvict 的作用 主要针对方法配置,能够根据一定的条件对缓存进行清空。常用属性参数如下:

参数解释example
value缓存的名称,在 spring 配置文件中定义,必须指定至少一个@CacheEvict(value=”my cache”)
key缓存的 key,可以为空,如果指定要按照 SpEL 表达式编写,如果不指定,则缺省按照方法的所有参数进行组合@CacheEvict(value=”testcache”,key=”#userName”)
condition缓存的条件,可以为空,使用 SpEL 编写,返回 true 或者 false,只有为 true 才进行缓存@CacheEvict(value=”testcache”,condition=”#userName.length()>2”)
allEntries是否清空所有缓存内容,缺省为 false,如果指定为 true,则方法调用后将立即清空所有缓存@CachEvict(value=”testcache”,allEntries=true)
beforeInvocation是否在方法执行前就清空,缺省为 false,如果指定为 true,则在方法还没有执行的时候就清空缓存,缺省情况下,如果方法执行抛出异常,则不会清空缓存@CachEvict(value=”testcache”,beforeInvocation=true)
@CacheEvict(value = "areaTreeData", allEntries = true, beforeInvocation = true)
public Integer save(SysArea sysArea) {return mapper.insertSelective(sysArea);
}

新时代农民工 

相关内容

热门资讯

保存时出现了1个错误,导致这篇... 当保存文章时出现错误时,可以通过以下步骤解决问题:查看错误信息:查看错误提示信息可以帮助我们了解具体...
汇川伺服电机位置控制模式参数配... 1. 基本控制参数设置 1)设置位置控制模式   2)绝对值位置线性模...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
表格中数据未显示 当表格中的数据未显示时,可能是由于以下几个原因导致的:HTML代码问题:检查表格的HTML代码是否正...
本地主机上的图像未显示 问题描述:在本地主机上显示图像时,图像未能正常显示。解决方法:以下是一些可能的解决方法,具体取决于问...
表格列调整大小出现问题 问题描述:表格列调整大小出现问题,无法正常调整列宽。解决方法:检查表格的布局方式是否正确。确保表格使...
不一致的条件格式 要解决不一致的条件格式问题,可以按照以下步骤进行:确定条件格式的规则:首先,需要明确条件格式的规则是...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...