2

В приложении весенней загрузки, использующем Netign для создания HTTP-запросов к службе, есть ли простой способ кэшировать и автоматически возвращать эти кешированные значения? Кэш должен быть основан на параметрах, переданных запросу (аналогично memoizing функции для X минут).Как кэшировать HTTP-запросы, сделанные с помощью библиотеки Feign Netflix в приложении Spring Java

Я ищу что-то вроде @Cache аннотацию ниже:

@Component 
@FeignClient(value = "facebook", url = "${auth.facebook.url}") 
public interface FacebookClient { 
    @Cache(600) // Something like this. 
    @RequestMapping(method = RequestMethod.GET, value = "/debug_token?input_token={input_token}&access_token={access_token}") 
    Map debugToken(@PathVariable("input_token") String inputToken, @PathVariable("access_token") String appToken); 
} 

Конечно, я мог кэшировать сам используя декоратор вокруг FacebookClient, мне было интересно, если там был быстрее/меньше кода способом.

ответ

0

Пружины @Cacheable выполняет то, что вам нужно.

enter link description here

+0

Спасибо за подсказку. Для других, кто может это прочитать, я нашел их полезными: [1] (http://stackoverflow.com/questions/8181768/can-i-set-a-ttl-for-cacheable) [2] (https: //github.com/spring-projects/spring-boot/tree/master/spring-boot-samples/spring-boot-sample-cache) – Alejandro

2

Feign не поддерживает кэширование. Я предпочел бы JCache (JSR-107) и, возможно, использовать его через spring-boot-starter-cache described in the spring guide

JCache является абстракцией для собственной реализации Ehcache, Hazelcast, ... так что можно изменить реализацию с очень меньшим воздействием на приложения , Сначала я бы предпочел EhCache 3.