如何在Java Spring应用程序中缓存使用Netflix的Feign库发出的HTTP请求



在使用Netflix的Feign向服务发出HTTP请求的春季启动应用程序中,有没有一种简单的方法可以自动缓存和返回这些缓存的值?缓存应该基于传递给请求的参数(类似于将函数存储X分钟)。

我正在寻找类似以下@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周围的装饰器自己缓存它,我想知道是否有一种更快/更少的代码方式。

Springs @Cacheable满足您的需求。

检查:使用Spring 缓存数据

Feign不支持缓存。我更喜欢JCache(JSR-107),也许可以通过春季指南中描述的春季启动启动缓存来使用它

JCache是EhCache、Hazelcast等专有实现的抽象。。。因此可以在对应用程序影响非常小的情况下更改实现。一开始我更喜欢EhCache 3。

Feign客户端不支持缓存。

另一种更好的方法是创建一个调用FeignClient的Service类,并在这个新Service类的方法上设置缓存。

相关内容

  • 没有找到相关文章

最新更新