带有反射方法的Spring缓存

时间:2013-01-22 15:45:42

标签: java spring caching ehcache key-generator

我试图通过使用缓存抽象文档中的方法来访问自定义密钥生成器以生成缓存密钥,但到目前为止我还没有找到任何解决方案......这里我给出了我的代码

@Cacheable(value = "itemsCache", key ="T(com.ernst.transactionsAPI.IndexKeyGenerator).generate(#root.target, #root.method.name, #root.args[0])")
public List<FilialenImpl> getOutletByCustomSearchCache(SearchParametersImpl searchParameters);

我收到了以下错误:

org.springframework.expression.spel.SpelEvaluationException: EL1004E:(pos 47): Method call: Method generate(com.ernst.transactionsImpl.filialen.FilialenServiceBean,java.lang.String,com.ernst.persistenceImpl.impl.SearchParametersImpl) cannot be found on com.ernst.transactionsAPI.IndexKeyGenerator type

它没有反映方法名称,但是它传递了方法类型..请问任何人如何解决这个问题。

indexkeygenerator中的

方法看起来像

public Object generate(Object target, Method method, Object... params) {
 ...}

先谢谢,

此致 拉哈西克哈。

1 个答案:

答案 0 :(得分:1)

我在IndexKeyGenerator类中编写了一个静态方法generateKey并直接调用它 如下面的代码所示..然后,个人缓存的自定义缓存工作正常

@Cacheable(value = "itemsCache", key ="T(com.ernst.transactionsAPI.IndexKeyGenerator).generateKey(#root.target, #root.method, #root.args[0])") public List<FilialenImpl> getOutletByCustomSearchCache(SearchParametersImpl searchParameters);

不要忘记覆盖SearchParameters类。