2017-06-13 76 views
0

我正在使用弹簧。我想要缓存以下方法:如何在春季缓存列表?

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

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

我该怎么办?

+0

你有没有试过'#{var2.toString()}' – Jaiwo99

+0

你想缓存什么?因为没有回报?通常可以缓存一个方法,以便从缓存中检索返回值。 – kism3t

+0

对不起。它应该有回报。我犯了一个错误。 – zchen

回答

1

你可以得到列表的的hashCode:

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

OR

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

试试看。

随着第二个你冒着危险,你的钥匙可能会根据列表的大小变长。