Кэш кофеина не работает со строковым параметром в качестве ключаJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Кэш кофеина не работает со строковым параметром в качестве ключа

Сообщение Anonymous »


У меня есть класс обслуживания TeamService, помеченный как @Service.

@Cacheable(value = CacheConfig.TEAM, key = "#root.methodName.concat(#nationality == null ? '' : #nationality )") public List getTeamList(String nationality) { вернуть teamFinder.getTeams().stream() .filter(команда -> team.getNationality().equals(национальность)) .к списку(); } Поиск команды – это внешний сервис. Он находит все команды. Cachable работает правильно, если параметр национальности имеет значение null, но если я передаю значение типа ENG, то кеш не работает. Каждый раз, когда я отправляю запрос к этому методу, даже если мой параметр национальности тот же, метод запускается, вызывает службу TeamFinder, а затем фильтрует результаты, а не возвращает результат из кеша. Я пытался использовать в качестве ключа только параметр национальности, но это все равно работало неправильно. Что не так с моим кодом?

Не могли бы вы рассказать мне, как я могу использовать имя метода и параметр национальности в качестве ключевого значения кэша?
[*]Моя версия с кофеином — 3.1.6. [*]Версия Java – 17. [*]spring-boot-starter и Spring-boot-starter-cache 3.1.2
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»