2

我在使用 @Cacheable 和使用基于 Spring 表达式语言的自定义键时遇到问题。我有以下代码

@Cacheable(value = "myCache", key = "#providerDTO.identifier")
ClientVO loadClientVOByProviderDTO(ProviderDTO providerDTO);

这是抛出以下错误

org.springframework.expression.spel.SpelEvaluation Exception: EL1007Epos 0): Field or property 'identifier' cannot be found on null

providerDTO 参数不为空,我已经验证过很多次了。文档说这应该可行,所以我很困惑。文档给出了以下示例

@Cacheable(value="books", key="#isbn.rawNumber")

我也尝试过使用静态方法。这会引发 NullPointerException,因为 providerDTO 在这里为空。

public static String cacheKey(ProviderDTO providerDTO)                                                                                                                                                                                                                    
{                                                                                                                                                                                                                                                                         
    return providerDTO.identifier + "-" + providerDTO.clientID + "-" + providerDTO.clubID;                                                                                                                                                                            
}

我如何调试它以找出发生了什么?这是 Spring 3.2.4-RELEASE。@Cacheable 标签在一个接口上,但我使用的是标准的 spring AOP 而不是 AspectJ,据我所知,这应该仍然可以正常工作。

4

1 回答 1

0

SpelEvaluationException的可能重复:EL1007E:(pos 43): Field or property 'group' cannot be found on null and spring @Cacheable with Ehcache, spel find null for valid object – 我相信你编译时没有调试信息。请检查您的 Maven 配置;您可能想在此处发布相关位。在您的 POM(或父 POM)中搜索maven-compiler-plugin和 一行,例如:

<debug>false</debug>
于 2014-06-19T11:06:14.860 回答