如何在春天缓存一个列表?

时间:2017-06-13 08:09:12

标签: java spring caching spring-el

我正在使用春天。我想缓存以下方法:

@Cacheable(cacheName = "xxx", key = "'foo_'.concat(#va1)")
public void foo(String var1, List<String> var2) { ... }

我想将var2的值集包含到缓存键中。我知道了   key = "'foo_'.concat(#va1).concat('_').concat(#var2)"错了。 (因为(#var2)将返回其内存地址,而不是值。

我该怎么办?

1 个答案:

答案 0 :(得分:1)

您可以获取List的hashCode:

key = "'foo_'.concat(#va1).concat('_').concat(#var2.hashCode())"

OR

key = "'foo_'.concat(#va1).concat('_').concat(#var2.toString())"

试一试。

对于第二个,你冒着根据列表大小你的密钥可能会变长的风险。