如果我有未知长度的字符串数组作为参数,我如何创建缓存键
String[] name = new String[2]{"Ramesh","Suresh"};
@cacheable(value="cacheStorage", key="#????")
public void getSurName(String[] name){}
如果我将字符串数组传递给getSurName方法,如何定义它的键。注意,数组的大小是未知的。
发布于 2016-07-19 14:22:28
最后,我使用Spring支持的自定义密钥生成器解决了这个问题。我所做的是,创建了一个名为cacheKeyGenearator的bean,并为它分配了一个类,它实现了KeyGenerator,如下所示:
public class CacheKeyGenerator implements KeyGenerator
{
@override
public String generate(final Object target, final Method method, final Object... params)
String key = "";
// my code to configure key using different params
return key;
}
对于xml部分,我这样做了:
<cache:annotation-driven key-generator= "cacheKeyGenerator">
<bean id ="cacheKeyGenerator" class ="com.cache.bean"/>
//on my service level
@CacheConfig(keyGenerator="com.cache.bean")
public class cacheServiceImpl implements cacheService
{
@overide
@Cacheable(value="cacheStore")
public String getSurName(String[] name)
// my code
}
https://stackoverflow.com/questions/38265662
复制相似问题