SpEL - Error: Method cannot be found on type
SpEL - Error: Method cannot be found on type
我在尝试实施 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.
对我可能做错了什么有什么建议吗?如果您需要任何进一步的信息,我很乐意提供给您 :)
谢谢
编辑:我刚刚有了 "brilliant" 搜索错误代码本身的想法并挖出了这个:relevant stack-oerflow question
所以我会检查一下并保持这个问题的更新..
我看到 2 个潜在问题。
createHashCode 是私有的
createHashCode 是静态的。有一种特殊的拼写语法可以调用静态方法:http://docs.spring.io/spring/docs/3.0.5.RELEASE/reference/expressions.html#d0e11977
您正在尝试调用 static 方法 createHashCode,但您的 class 没有声明任何方法。因此,要么使您的方法静态化,要么使用 #root.target.createHashCode(#root.args[0])
SpEL 表达式。
我在尝试实施 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.
对我可能做错了什么有什么建议吗?如果您需要任何进一步的信息,我很乐意提供给您 :) 谢谢
编辑:我刚刚有了 "brilliant" 搜索错误代码本身的想法并挖出了这个:relevant stack-oerflow question
所以我会检查一下并保持这个问题的更新..
我看到 2 个潜在问题。
createHashCode 是私有的
createHashCode 是静态的。有一种特殊的拼写语法可以调用静态方法:http://docs.spring.io/spring/docs/3.0.5.RELEASE/reference/expressions.html#d0e11977
您正在尝试调用 static 方法 createHashCode,但您的 class 没有声明任何方法。因此,要么使您的方法静态化,要么使用 #root.target.createHashCode(#root.args[0])
SpEL 表达式。