当前位置: 首页 > 知识库问答 >
问题:

可以在外部客户端上使用Spring@Cache*吗?

韦衡
2023-03-14

我有一个假客户端,它从微服务请求令牌。由于我正在进行多次调用,我希望缓存从外部客户端收到的响应并使用Spring Guava缓存,但它似乎不起作用。我所拥有的只是外部客户端上的配置类和注释。

我在堆栈溢出的某个地方读到,Fegn可能不支持@Cacheable注释。这是真的吗?

共有3个答案

明安阳
2023-03-14

根据文档,从版本3.1.0(作为Spring Cloud 2021.0.0的一部分)起,使用Cacheable注释外部客户机现在可以在Spring Cloud OpenFeign中开箱即用。

您只需确保:

  • 您已配置EnableCaching
  • 您在依赖项中使用的是spring cloud starter openfeign,因此这通常意味着导入2021.0.0版本的spring cloud依赖项(他们在2020年切换到calver)
  • 您正在使用Spring Boot 2.4.1(此版本的Spring Cloud需要)
赫连卓
2023-03-14

比安卡应该做的是在她的项目中添加一个@Service注释类,在那里她可以使用@cacheable注释。

使用FeignClient的传统方法是,只有一个用@FeignClient注释的接口,然后从其他项目/类中调用这些方法。她添加了一个@Service注释类,在这个类中,她称她的假客户机方法为缓存她想要的任何东西。

fegnClient类:

@FeignClient(name="my_feign-client", url = "http://myurl.com/")
public interface MyFeignClient {
    @GetMapping("/test")
    public ResponseEntity<String> test() throws FeignException;

类调用外部客户端方法的位置:

public class TestClass {
    @Autowired
    private MyFeignClient myFeignClient ;
    
    public String callTest() {
    ...
        return myFeignClient.test();
    }

客户端类保持不变。

带缓存的服务类:

@Service
@CacheConfig(cacheNames={"test"})
public class TestService {
    @Autowired
    private MyFeignClient myFeignClient ;
    
    @Cacheable
    public String callCachedTest() {
    ...
    return myFeignClient.test();
}

最后,调用缓存方法的类,调用feignClient:

public class TestClass {
    @Autowired
    private TestService testService ;
    
    public String callTest() {
    ...
        return testService.callCachedTest();
    }
袁炳
2023-03-14

最后,我设法解决了我的问题。我最后做的是:

-

-

-

它起作用了!:)

 类似资料:
  • 在我们的Spring应用程序中,我们依赖外部系统。我们希望为该系统的请求设置超时,但无法确定如何配置。 我们使用这个: 我已经尝试过这个:如何使用泽西2. x设置连接和读取超时?和许多其他建议,但无法让它工作。任何建议都将不胜感激。 不工作的更新: 也

  • 我有一个类,它使用了一个FIGEN客户端。以前,我使用Mockito,并为每个方法调用提供了一个存储的响应。现在我想使用WireMock,这样我就可以看到我的代码正确处理不同类型的响应代码。我该怎么做呢?我不知道如何在测试中连接我的Faignn客户端,并连接它,使它使用WiRemote ck而不是我在我的文件中设置的网址。任何建议都将不胜感激。

  • 按照这里的讨论,我使用以下步骤使外部客户端(基于 kafkajs)连接到 OpenShift 上的 Strimzi。这些步骤从这里开始。 被编辑为如下所示。 要提取证书并在客户端中使用它,我运行了以下命令: 请注意,我必须在我的macOS上使用,而不是,如留档所示。 这是从他们的 页面和他们的文档改编的客户端。 当我从具有的文件夹运行时,我收到一条连接拒绝消息。 我错过了什么?

  • 问题内容: 是否可以在GWT客户端中使用Java反射api?我想使用反射来查找Javabean上属性的值。这可能吗? 问题答案: 我去过那里,解决方案的确是使用Deferred Binding和Generators。您可以在此处看到使用生成器来克服GWT客户端中缺少反射的问题: http://jpereira.eu/2011/01/30/wheres-my-java- reflection/ 希望

  • 问题内容: 有什么办法在外面使用吗? 这是我使用的代码的一部分: 更新 没有办法使响应在全球范围内可用吗? 问题答案: 没有; 异步执行,因此当您调用时,AJAX请求仍在运行,尚未产生响应。这是回调函数的目的:提供请求完成 后 要运行的代码。如果进入回调函数,它应该可以工作: 更新: 如果您希望响应数据在全球范围内可用,则可以在全局范围内声明变量,如下所示: 当然,唯一可以确保实际填充值的上下文是

  • 我使用的不是Javascript direct,而是Clojurescript,所以我的上传调用可能有问题。缺少任何请求Google drive权限的内容似乎表明存在真正的授权问题,但我希望在请求“https://www.googleapis.com/auth/drive”时不会获得access_token。谢谢 更新....我终于解决了这个问题:如果我请求“https://www.googlea