我正在尝试访问自定义密钥生成器以使用缓存抽象文档中的方法生成用于缓存的密钥,但到目前为止我还没有找到任何解决方案......在这里我给出我的代码
@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
它不反映方法名称,而是传递方法类型。任何人都可以请问如何解决这个问题。
索引键生成器中的方法看起来像
public Object generate(Object target, Method method, Object... params) {
...}
提前致谢,
问候拉贾塞卡。
我在 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 类。