spring cache如何定义前缀?

时间:2018-12-17 08:31:55

标签: java spring spring-cache

我的公司正在使用4.2版的春季版本。我想添加带有redis的spring缓存功能。我很困惑的是如何为我的业务密钥自定义前缀? 我知道有两种定义键的方法

a。键

@Cacheable(value = CacheConstants.REDIS_CACHE, key = CacheConstants.CLASSES_PREFIX + "#classId")

但是这种弹簧会出错:

  

EL1041E :(位置2):在解析有效的表达式之后,仍然存在   表达式中包含更多数据:“ colon(:)”

我这样使用,但不使用@Cacheable(value = CacheConstants.REDIS_CACHE, key = "'cn.cnt.concat'.concat(#classId)"),因为这种方式是课堂上的硬代码。

b。 keyGenerator

如果使用keyGenerator,我们可以为客户提供密钥。但是不能将bizKey前缀传递给keyGenerator。如此一来,我们将无法使其他更新业务数据的@CacheEvict方法中的键无效(删除)。

那么,通过这两种方式,似乎没有办法为键自定义前缀?

1 个答案:

答案 0 :(得分:0)

您可以像对动态键那样执行

@Cacheable(value = CacheConstants.REDIS_CACHE,key="'"+CacheConstants.CLASSES_PREFIX+"'#classId")