Spring @Cacheable with SpEL key: Wertet immer mit null aus

Ich habe ein Problem mit @Cacheable und verwende einen benutzerdefinierten Schlüssel, der auf der Sprache des Spring-Ausdrucks basiert. Ich habe den folgenden Code

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

Dies löst den folgenden Fehler aus

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

Das providerDTO-Argument ist nicht null, das habe ich viele Male überprüft. Die Docs sagen, dass dies funktionieren sollte, also bin ich sehr verwirrt. Die Dokumentation enthält das folgende Beispiel

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

Ich habe es auch mit einer statischen Methode versucht. Dies löst eine NullPointerException aus, da der providerDTO hier null ist.

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

Wie kann ich dies debuggen, um herauszufinden, was passiert? Dies ist Spring 3.2.4-RELEASE. Das Tag @Cacheable befindet sich auf einer Benutzeroberfläche, ich verwende jedoch Standard-Spring-AOP und nicht AspectJ, sofern ich weiß, dass dies noch einwandfrei funktionieren sollte.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage