如何给Cacheable的key加上常量
目录
- Cacheable的key加上常量
- 背景
- springcache key的定义方式
- 1.不指定key,使用默认key生成器
- 2.指定key值
- 3.自定义key生成器
Cacheable的key加上常量
背景
由于缓存的注解有类似的前缀,所以抽取出常量。
public static final String KEY_CERT_TYPE_CODE_PREFIX = "ec_cert_type:cert_type_code:"; @Override @Cacheable(key = KEY_CERT_TYPE_CODE_PREFIX + "+#code") public EcCertType loadCertTypeByCode(String code) { // something return type; }
但是使用时,报错:
EL1041E: After parsing a valid expression, there is still more data in the expression
经修改,给常量加上单引号,使:不被SpEL解析,解决。
public static final String KEY_CERT_TYPE_CODE_PREFIX = "'ec_cert_type:cert_type_code:'"; @Override @Cacheable(key = KEY_CERT_TYPE_CODE_PREFIX + "+#code") public EcCertType loadCertTypeByCode(String code) { // something return type; }
springcache key的定义方式
1.不指定key,使用默认key生成器
使用默认key生成器的话,缓存的对象需要实现toString()方法,里面拼接自己想要作为key的字段。
调用查询接口之后,缓存中的key如下:
其中TRANSFORMERS-ACT_DICT-KEY是定义的value值,表示放到哪个缓存中。
2.指定key值
运行后key值如下
此时是以传递过来的Student对象中的id值作为key。
3.自定义key生成器
引用自定义的生成器
key值如下:
以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。
相关推荐
-
@Cacheable 拼接key的操作
我就废话不多说了,大家还是直接看代码吧~ @Cacheable(value = "page_user",key ="T(String).valueOf(#page).concat('-').concat(#pageSize)",unless = "#result=null")//由于page是int型,concat要求变量必须为String,所以强转一下 @Override public List<SysUserEntity> pag
-
springboot增加注解缓存@Cacheable的实现
目录 springboot增加注解缓存@Cacheable 业务层使用 配置 @Cacheable注解的属性使用 cacheNames和value key keyGenerator keyGenerator condition unless(除非) sync springboot增加注解缓存@Cacheable 业务层使用 @Cacheable(value = "dictionary#1800", key = "#root.targetClass.simpleName +':
-
解决springCache配置中踩的坑
目录 springCache配置中踩的坑 先附上正确的配置 springCache配置及一些问题的解决 配置 @Cacheable参数 @CacheEvict 参数 @CachePut 参数 springCache配置中踩的坑 项目基于SpringBoot,使用了SpringCache. 早先在网上找了一份SpringCache的配置,后来由于需要使用到自定义序列化方法,注入一个自定义的序列化类.但是在后来发现自定义的序列化类始终没有调用,后来查看源码后终于发现了原因 先附上正确的配置 @Bea
-
Spring @Cacheable注解中key的使用详解
目录 Spring @Cacheable注解中key使用 下面是几个使用参数作为key的示例 condition属性指定发生的条件 @CachePut @CacheEvict allEntries属性 beforeInvocation属性 @Caching 使用自定义注解 @Cacheable 拼接key Spring @Cacheable注解中key使用 key属性是用来指定Spring缓存方法的返回结果时对应的key的.该属性支持SpringEL表达式.当我们没有指定该属性时,Spring将
-
如何给Cacheable的key加上常量
目录 Cacheable的key加上常量 背景 springcache key的定义方式 1.不指定key,使用默认key生成器 2.指定key值 3.自定义key生成器 Cacheable的key加上常量 背景 由于缓存的注解有类似的前缀,所以抽取出常量. public static final String KEY_CERT_TYPE_CODE_PREFIX = "ec_cert_type:cert_type_code:"; @Override @Cacheable(k
-
手写redis@Cacheable注解 参数java对象作为key值详解
目录 1.实现方式说明 1.1问题说明 1.2实现步骤 2.源代码 3.测试 1.实现方式说明 本文在---- 手写redis @ Cacheable注解支持过期时间设置 的基础之上进行扩展. 1.1问题说明 @ Cacheable(key = “'leader'+#p0 +#p1 +#p2” )一般用法,#p0表示方法的第一个参数,#p1表示第二个参数,以此类推. 目前方法的第一个参数为Java的对象,但是原注解只支持Java的的基本数据类型. 1.2实现步骤 1.在原注解中加入新的参数,
-
Spring boot redis cache的key的使用方法
在数据库查询中我们往往会使用增加缓存来提高程序的性能,@Cacheable 可以方便的对数据库查询方法加缓存.本文主要来探究一下缓存使用的key. 搭建项目 数据库 mysql> select * from t_student; +----+--------+-------------+ | id | name | grade_class | +----+--------+-------------+ | 1 | Simone | 3-2 | +----+--------+-----------
-
使用@Cacheable缓存解决双冒号::的问题
目录 @Cacheable缓存解决双冒号:: Cacheable的使用总结 常规使用方法 @Cacheable缓存解决双冒号:: 使用spring-data-redis2.x版本时,@Cacheable缓存key值时默认会给vlue或cacheNames后加上双引号 通过配置进行修改即可满足项目需求 @Configuration public class SpringCacheConfig{ @Bean public CacheManager cacheManager(LettuceConnec
-
SpringBoot如何使用@Cacheable进行缓存与取值
目录 使用@Cacheable进行缓存与取值 1. @Cacheable的作用 2.常用属性说明 SpringBoot中Cacheable使用说明 功能说明 1. cacheNames & value 2. 关联多个缓存名 3. key & keyGenerator 4. cacheManager & cacheResolver 5. sync 6. condition 7. unless 8. condition VS unless ? 使用@Cacheable进行缓存与取值 1
-
一步一步跟我学易语言之常数、常量和资源
常数: 常数为可以直接在程序中使用的数据,它具有以下几种类型: 1.数值型常数.如: 1.100.3.14 等: 2.逻辑型常数.如:真.假 : 3.日期时间型常数.日期时间常数的内容必须用中括号括住,并且应按以下格式之一提供,在书写时年份后的时间部分可以被省略: <1>.[1982年4月23日12时30分25秒] <2>.[1982/4/23/12/30/25] <3>.[1982/4/23/12:30:25] <4>.[1982-4-23-12-30-2
-
Spring Boot集成redis,key自定义生成方式
一)自定义redis key生成策略 @Configuration:表示当前类属于一个配置类,类似于一个spring.cfg.xml. @EnableCaching:表示支持启用缓存. 自定义配置源码: import org.springframework.cache.CacheManager; import org.springframework.cache.annotation.CachingConfigurerSupport; import org.springframework.cach
-
springboot中使用redis的方法代码详解
特别说明: 本文针对的是新版 spring boot 2.1.3,其 spring data 依赖为 spring-boot-starter-data-redis,且其默认连接池为 lettuce redis 作为一个高性能的内存数据库,如果不会用就太落伍了,之前在 node.js 中用过 redis,本篇记录如何将 redis 集成到 spring boot 中.提供 redis 操作类,和注解使用 redis 两种方式.主要内容如下: •docker 安装 redis •springboo
随机推荐
- Erlang实现的一个Web服务器代码实例
- Asp.net SignalR支持的平台有哪些
- 详解 Go 语言中 Map 类型和 Slice 类型的传递
- java获取系统路径字体、得到某个目录下的所有文件名、获取当前路径
- Attribute/特性心得随笔
- php中strtotime函数用法详解
- asp提示Server 对象 错误 ASP 0178 : 80070005
- Android获取其他包的Context实例代码
- 深入研究mysql中的varchar和limit(容易被忽略的知识)
- 简单好用的PHP分页类
- Linux操作系统操作MySQL常用命令小结
- JavaScript运动框架 多值运动(四)
- 使用百度地图api实现根据地址查询经纬度
- Linux X Window应用问答(下)
- SpringMvc入门指南(必看)
- Java成员变量的隐藏(实例讲解)
- Android实现炫酷的网络直播弹幕功能
- 简单实现安卓里百度地图持续定位
- jquery图片放大功能简单实现
- Java编程实现深度优先遍历与连通分量代码示例