如何为Spring Cache设置自定义KeyGenerator?

我正在使用Spring 3.1,我想使用新的缓存function。 然后,我试过:

    

但我没有找到配置我的自定义KeyGenerator的方法。 任何想法?

在Spring 3.1 RC1中有一种更好的方法:

   import org.springframework.cache.interceptor.KeyGenerator; public class MyKeyGenerator implements KeyGenerator { public Object generate(Object target, Method method, Object... params) { }} 

截至今天,只需从下载弹簧时获得的jar文件中删除org.springframework.context.support-3.1.0.RC1.jar \ org \ springframework \ cache \ config \ spring-cache-3.1.xsd,它就可以正常工作精细。

好的,我只是想办法做到这一点……

      

正如你所看到的,我使用AnnotationDrivenCacheBeanDefinitionParser,我把配置放在我的xml中,它工作正常:)完成!

编辑:

对于Spring> 3.2,您可以使用实现CachingConfigurer的简单Java类配置:

 @EnableCaching(mode = AdviceMode.ASPECTJ) public class CacheConfig implements CachingConfigurer { public KeyGenerator keyGenerator() { return new ReflectionBasedKeyGenerator(); } public CacheManager cacheManager() { return new RedisCacheManager(redisCacheTemplate); } } 

我遇到了Spring Frameworks默认的Cache KeyGenerator的问题。 它似乎经常遇到冲突,似乎已经记录在这个问题上

我知道这个问题已被标记为已回答,但我想我会分享我是如何解决这个问题的…

      

基本上,我们创建并使用了我们自己的Cache KeyGenerator来代替默认的。