Spring @Cacheable with SpEL key:始终求值为null

时间:2013-08-09 23:18:22

标签: spring spring-el

我遇到了@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参数不为null,我已多次验证。文档说这应该有用,所以我很困惑。文档提供以下示例

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

我也试过静态方法。这会抛出NullPointerException,因为这里providerDTO为null。

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

如何调试此内容以了解发生了什么?这是Spring 3.2.4-RELEASE。 @Cacheable标签位于一个接口上,但我使用的是标准的弹簧AOP,而不是AspectJ,据我所知,这应该仍能正常工作。

1 个答案:

答案 0 :(得分:0)

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

<debug>false</debug>