spel-error:在类型上找不到方法

g2ieeal7  于 2021-07-03  发布在  Java
关注(0)|答案(2)|浏览(407)

我在尝试实现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问题
所以我会查出来并不断更新这个问题。。

amrnrhlw

amrnrhlw1#

我看到两个潜在的问题。
createhashcode是私有的
createhashcode是静态的。有一种特殊的spel语法可以调用静态方法:http://docs.spring.io/spring/docs/3.0.5.release/reference/expressions.html#d0e11977

vzgqcmou

vzgqcmou2#

您试图调用一个静态方法createhashcode,但是您的类没有声明任何。所以,要么让你的方法是静态的,要么使用 #root.target.createHashCode(#root.args[0]) spel表达式。
有关更多信息,请参阅spring cache抽象参考

相关问题