2016-07-08 59 views
1

如何创建高速缓存密钥,如果我有未知长度的字符串数组像定义缓存键用于高速缓存在弹簧

String[] name = new String[2]{"Ramesh","Suresh"}; 

    @cacheable(value="cacheStorage", key="#????") 
    public void getSurName(String[] name){} 

参数如果我通过字符串数组方法getSurName,如何定义的关键为了它。请注意,数组的大小是未知的。

回答

0

最后,我能够使用Spring的自定义密钥生成器支持来解决这个问题。我所做的就是,创建了一个名为cacheKeyGenearator并分配一个类来它豆,这是实现的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 
    }