У меня проблема с @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 здесь имеет значение null.
public static String cacheKey(ProviderDTO providerDTO)
{
return providerDTO.identifier + "-" + providerDTO.clientID + "-" + providerDTO.clubID;
}
Как я могу отладить это, чтобы узнать, что происходит? Это Spring 3.2.4-RELEASE. Тег @Cacheable находится на интерфейсе, но я использую стандартный Spring AOP, а не AspectJ, поэтому, насколько я понимаю, это должно работать нормально.