java - SpEL - 错误 : Method cannot be found on type

标签 java spring caching annotations spring-el

我在尝试实现 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):在CacheTestServiceImpl类型上找不到方法createHashCode(String)。

关于我可能做错了什么有什么建议吗?如果您需要任何进一步的信息,我很乐意提供 ofc :) 谢谢

编辑:我只是有一个“绝妙”的想法来搜索错误代码本身并挖出了这个:relevant stack-oerflow question

所以我会检查一下并更新这个问题..

最佳答案

您正在尝试调用静态方法createHashCode,但您的类未声明任何方法。因此,要么使您的方法静态,要么使用 #root.target.createHashCode(#root.args[0]) SpEL 表达式。

引用Spring Cache abstraction reference了解更多信息

关于java - SpEL - 错误 : Method cannot be found on type,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37135971/

相关文章:

java - 非启动 Spring 项目的 Spring Boot BOM

spring - ISO货币 list

java - Spring 错误创建名称为 'jpaContext' 的 bean

java - Spring Scheduler同步方法饥饿

php - 为时间敏感的图像覆盖 Gmail 图像缓存(或设置较短的时间限制)

linux - Artifactory 缓存文件显示的大小比其源文件大得多

java - 使用Java的K均值聚类

java - 包含来自 Java EE Filter 的 JSP 文件

java jersey 2如何使用post处理常规html表单数组?

javascript - 从浏览器缓存中删除特定图像