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.