2013-08-09 1 views
0

@Cacheable에 문제가 있고 Spring 표현식 언어를 기반으로하는 사용자 정의 키를 사용 중입니다. 난이 여러 번 확인했습니다이Spring @Cacheable with SpEL 키 : 항상 null로 평가됩니다.

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

providerDTO 인수가 null가 아닌 다음과 같은 오류를 던지고있다

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

다음 코드를 가지고있다. 문서는 이것이 매우 혼란 스러울 정도로 작동해야한다고 말합니다. 문서에 다음 예제가 있습니다.

나는 또한 정적 방법으로 시도했습니다. providerDTO가 null이기 (위해) 때문에, NullPointerException가 Throw됩니다.

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

어떻게 디버깅하면 어떤 일이 일어나는지 확인할 수 있습니까? 이것은 Spring 3.2.4-RELEASE이다. @Cacheable 태그는 인터페이스 상에 있지만 AspectJ가 아닌 표준 스프링 AOP를 사용하고 있기 때문에 이것이 여전히 잘 작동해야한다는 것을 이해할 수 있습니다.

+0

캐시 만 사용자 정의 키 생성없이 작동하고 있습니까? 인터페이스가 아니라 구체적인 구현체에 태그를 지정 했습니까? – micfra

답변