0

我正在尝试使用缓存抽象文档中的方法访问自定义密钥生成器以生成用于缓存的密钥,但直到现在我还没有找到任何解决方案......在这里我给出了我的代码

@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) {
 ...}

提前致谢,

问候,拉贾塞卡。

4

1 回答 1

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 类。

于 2013-01-30T14:41:35.283 回答