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

基于环境定义不同的Feign客户端实现

贺俊材
2023-03-14
@FeignClient(name = "http://foo-service")
public interface FooResource {
    @RequestMapping(value = "/doSomething", method = GET)
    String getResponse();
}
public class MyService {
    private FooResource fooResource;

    ...

    public void getFoo() {
        String response = this.fooResource.getResponse();
        ...
    }
}
@Configuration
public class AppConfig {
    @Bean
    @ConditionalOnProperty(prefix = "spring.profile", name = "active", havingValue="local")
    public FooResource fooResource() {
        return new FooResource() {
            @Override
            public String getResponse() {
                return "testing";
            }
        };
    }
}

根据Intellij的说法。这是由Spring Cloud Netflix框架自动生成的类型,因此尝试与远程服务进行实际通信。

是否有一种方法可以根据配置设置有条件地重写Feign接口的实现?

共有1个答案

秦安怡
2023-03-14

解决方案如下所示:

public interface FeignBase {
   @RequestMapping(value = "/get", method = RequestMethod.POST, headers = "Accept=application/json")
   Result get(@RequestBody Token common);
}

然后定义基于环境的接口:

@Profile("prod")
@FeignClient(name = "service.name")
public interface Feign1 extends FeignBase 
{}

@Profile("!prod")
@FeignClient(name = "service.name", url = "your url")
public interface Feign2 extends FeignBase 
{}

最后,在您的服务Impl中:

@Resource
private FeignBase feignBase;
 类似资料:
  • 我们正在Spring Cloud+NetflixOS上构建一个微服务架构,到目前为止,它非常棒。然而,我们已经注意到,当我们第一次启动Eureka+2个单独的微服务时,Service1无法连接到Service2长达30秒,即使两者都很快注册到Eureka并单独出现。这发生在本地或部署(通过Tutum在AWS上) 我们得到的错误是:

  • 本文向大家介绍基于Python的ModbusTCP客户端实现详解,包括了基于Python的ModbusTCP客户端实现详解的使用技巧和注意事项,需要的朋友参考一下 前言 Modbus协议是由Modicon公司(现在的施耐德电气Schneider Electric)推出,主要建立在物理串口、以太网TCP/IP层之上,目前已经成为工业领域通信协议的业界标准,广泛应用在工业电子设备之间的互联。 Modb

  • Feign是一个声明式的Web服务客户端。这使得Web服务客户端的写入更加方便 要使用Feign创建一个界面并对其进行注释。它具有可插入注释支持,包括Feign注释和JAX-RS注释。Feign还支持可插拔编码器和解码器。Spring Cloud增加了对Spring MVC注释的支持,并使用Spring Web中默认使用的HttpMessageConverters。Spring Cloud集成Ri

  • 我的问题是:我们是否有一种方法来定义绑定,它将在本地环境中监听存储队列,但在部署到生产时将切换到服务总线? 这听起来像XY问题,所以如果有人有更好的主意来解决我的X问题,我洗耳恭听。

  • 我有一个Spring Boot应用程序,希望创建一个具有静态定义的头值(用于auth,但不是基本auth)的假客户端。我找到了注释,但它在Spring Boot领域似乎不起作用。我怀疑这与使用有关。 我用我的尝试制作了一个干净的spring boot应用程序,并在这里发布到github:github示例 使其工作的唯一方法是将定义为全局bean,但我不想这样做,因为这会影响其他客户机。

  • 那么如何提取错误代码呢?我想提取错误代码并构建一个responseEntity 我得到了这段代码,但不知道如何在函数中使用。