Как получить доступ к данным Spring @Cacheable?
У меня есть следующий код, и я хочу получить данные в "instagramSearchResultsCache". Как я могу сделать это, используя Spring Cache, например, чтобы распечатать его?
@Cacheable(value = "instagramSearchResultsCache", key = "#tagName")
public ArrayList<SingleInstagramDTO> getInstagramData(String tagName) {
JSONObject jsonObject = sendGETRestTemplate(tagName);
if (jsonObject == null) {
return null;
}
JSONArray arr = jsonObject.optJSONArray("data");
ArrayList<SingleInstagramDTO> instagramRestObjectsList = new ArrayList<>();
for (int i = 0; i < arr.length(); i++) {
JSONObject jsonElement = arr.optJSONObject(i);
InstagramFormatter formatter = new InstagramFormatter(jsonElement);
JSONObject instagramJSONObject = formatter.getResultInstagramObject();
instagramRestObjectsList.add(new SingleInstagramDTO(instagramJSONObject));
}
return instagramRestObjectsList;
}
1 ответ
Вы не должны получать доступ к этим данным из кода в настройке prod, так как это противоречит цели абстракции. Если вы просто хотите заглянуть внутрь для тестирования, это будет зависеть от вашего провайдера кеша. Например, с Redis вы можете использовать RedisConnection для поиска ключей по некоторому шаблону. Но опять же, это сильно зависит от поставщика и никогда не рекомендуется и не требуется, так как предложение аннотации так, что вам не нужно беспокоиться о доступе к данным вручную. Если данные уже существуют, вызов метода не произойдет, и ваши данные будут возвращены из кэша.