我的公司正在使用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方法中的键无效(删除)。
那么,通过这两种方式,似乎没有办法为键自定义前缀?
答案 0 :(得分:0)
您可以像对动态键那样执行
@Cacheable(value = CacheConstants.REDIS_CACHE,key="'"+CacheConstants.CLASSES_PREFIX+"'#classId")