gpt4 book ai didi

spring-cloud - 在运行时更改 FeignClient url

转载 作者:行者123 更新时间:2023-12-03 14:44:32 72 4
gpt4 key购买 nike

拥有 Feign 客户端:

@FeignClient(name = "storeClient", url = "${feign.url}")
public interface StoreClient {
//..
}

是否可以利用 Spring Cloud 的环境更改功能在运行时更改 Feign url? (更改 feign.url 属性并调用 /refresh 端点)

最佳答案

作为一种可能的解决方案 - RequestInterceptor可以引入以在 RequestTemplate 中设置 URL来自 RefreshScope 中定义的属性.

要实现这种方法,您应该执行以下操作:

  • 定义 ConfigurationProperties ComponentRefreshScope
    @Component
    @RefreshScope
    @ConfigurationProperties("storeclient")
    public class StoreClientProperties {
    private String url;
    ...
    }
  • application.yml 中指定客户端的默认 URL
    storeclient
    url: https://someurl
  • 定义 RequestInterceptor将切换 URL
    @Configuration
    public class StoreClientConfiguration {

    @Autowired
    private StoreClientProperties storeClientProperties;

    @Bean
    public RequestInterceptor urlInterceptor() {
    return template -> template.insert(0, storeClientProperties.getUrl());
    }

    }
  • 在您的 FeignClient 中使用一些占位符URL 的定义,因为它不会被使用
    @FeignClient(name = "storeClient", url = "NOT_USED")
    public interface StoreClient {
    //..
    }

  • 现在 storeclient.url可以刷新,定义的 URL 将在 RequestTemplate 中使用发送http请求。

    关于spring-cloud - 在运行时更改 FeignClient url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46366071/

    72 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com