Spring 使用 Spring 表达式语言启动 Caffeine 缓存

Spring Boot Caffeine Cache with Spring Expression Language

我正在使用 Spring 启动时使用 Caffeine Cache。我的缓存键是一个 Long 键,我需要键为例如:“1234-RULE”,其中 1234 是 Long 对象,-RULE 只是一个后缀。我尝试了以下方法来实现这一点:

private final static String RULE_KEY = "#rule.id.concat('-RULE')";

@Cacheable(value = CacheConfig.RULE_OFFSET, key = RULE_KEY)
public BigDecimal getRuleOffset(final Rule rule) {

  // some code to fetch the value and return it

}

调试时出现错误:

Error occurred while performing the request. Message: EL1004E: Method call: Method concat(java.lang.String) cannot be found on type java.lang.Long

我的 rule.id 是 Long,我用来连接 ID 和后缀的表达式似乎不正确。你能告诉我如何在这里为我的用例连接一个 long 和 string 吗?

EL 的文档有时可能有点奇怪,但您可以在这里使用 + 作为连接运算符:

#rule.id + '-RULE'