我在尝试实现spring缓存时遇到了一个问题。
我只能提供一个示意图片段(发布真实代码可能会让我被炒鱿鱼:s)
public class CacheTestServiceImpl {
@Cacheable(value=SOME_STRING_CONSTANT, key="#root.targetClass.createHashCode(#root.args[0])")
public int getID(String userName, String someOtherParam) {
}
public int createHashCode(String userName) {
return 0;
}
}
我经常犯的错误是 EL1004E:(pos 18): Method createHashCode(String) cannot be found on CacheTestServiceImpl type.
关于我可能做错了什么有什么建议吗?如果您需要进一步的信息,我很乐意提供给您,谢谢
编辑:我刚刚有了搜索错误代码本身的“绝妙”想法,并挖掘出了这个:相关堆栈oerflow问题
所以我会查出来并不断更新这个问题。。
2条答案
按热度按时间amrnrhlw1#
我看到两个潜在的问题。
createhashcode是私有的
createhashcode是静态的。有一种特殊的spel语法可以调用静态方法:http://docs.spring.io/spring/docs/3.0.5.release/reference/expressions.html#d0e11977
vzgqcmou2#
您试图调用一个静态方法createhashcode,但是您的类没有声明任何。所以,要么让你的方法是静态的,要么使用
#root.target.createHashCode(#root.args[0])
spel表达式。有关更多信息,请参阅spring cache抽象参考