Кэш кофеина не работает со строковым параметром в качестве ключа ⇐ JAVA
-
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
У меня есть класс обслуживания 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
Мобильная версия