Spring @Cacheable для методов с одинаковой сигнатурой

#java #spring #caching

#java #spring #кэширование

Вопрос:

У меня есть компонент Spring, в котором есть пара средств поиска с одинаковой подписью, например:

 @Cacheable
public Player findById(int id) {
    // query player by id
    return player;
}

@Cacheable
public Player findByRank(int rank) {
    // query player by rank
    return  player;
}
  

Аннотация @Cacheable рассматривает оба метода одинаково, поэтому это приводит к беспорядку в кэше. Есть ли способ сообщить Spring, что ключи для этих методов не совпадают?

Ответ №1:

Может быть, вы можете попробовать это? Не уверен, работает ли это..

 @Cacheable(value = "playerId")
public Player findById(int id) {
    // query player by id
    return player;
}

@Cacheable(value = "playerRank")
public Player findByRank(int rank) {
    // query player by rank
    return  player;
}
  

Комментарии:

1. Да, это работает! Я надеялся на надежное решение, но на данный момент это решает проблему.