Java 如何为同一个外部客户端接口的不同配置文件切换2个注释

Java 如何为同一个外部客户端接口的不同配置文件切换2个注释,java,spring-boot,netflix-eureka,spring-profiles,spring-boot-2,Java,Spring Boot,Netflix Eureka,Spring Profiles,Spring Boot 2,如何为同一个外部客户端接口的不同配置文件切换2个注释 我使用一个假的客户端接口,当与负载平衡器url一起使用时,它有以下代码。我称之为非尤里卡,以供参考: @FeignClient(name = "DEPOSIT-FEIGN-CLIENT", url = "${DEPOSIT-DATA-URL}") public interface DepositFeignClient { @RequestMapping(method = RequestMethod.GET, value = "/pa

如何为同一个外部客户端接口的不同配置文件切换2个注释

我使用一个假的客户端接口,当与负载平衡器url一起使用时,它有以下代码。我称之为非尤里卡,以供参考:

@FeignClient(name = "DEPOSIT-FEIGN-CLIENT", url = "${DEPOSIT-DATA-URL}")
public interface DepositFeignClient {

    @RequestMapping(method = RequestMethod.GET, value = "/path/to/api/{accountNumber}", produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE)
    DepositResponse getDepositDetails(@PathVariable(value = "accountNumber") String accountNumber);

}
另一方面,我在使用Eureka和Spring Cloud Gateway时使用以下代码:

@FeignClient(value = "ABCD-GATEWAY", path = "${DEPOSIT-EUREKA-APPNAME}")
public interface DepositFeignClient {

    @RequestMapping(method = RequestMethod.GET, value = "/path/to/api/{accountNumber}", produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE)
    DepositResponse getDepositDetails(@PathVariable(value = "accountNumber") String accountNumber);

}
现在,我的要求是通过类似Spring概要文件的方式来控制它们,这样,如果概要文件名=Eureka,则Eureka注释处于活动状态,否则非Eureka注释处于活动状态

我必须以某种方式在一个接口名中完成,因为我使用它的方式如下:

private final DepositFeignClient depositFeignClient;
//other code
DepositResponse depResponse =
                    depositFeignClient.getDepositDetails(accountNumber);
//other code
请告诉我使用@Profile、@ConditionalOnProperty或其他方法是否有助于解决我的问题。我使用的是SpringBoot2.x和Java8

编辑 请注意,在Eureka情况下,我使用路径和值属性,在非Eureka情况下,我使用名称和url属性,这就是问题所在。

您应该尝试创建2个应用程序-{profileName}.properites文件,根据需要设置参数,然后在该配置文件处于活动状态时运行


本文的第8节也可能对您有用:

为每个概要文件创建两个属性文件:eureka和non-eureka,比如dev和prod。可以从属性中插入FaignClient注释url参数,以便您可以在非eureka和eureka配置文件中放置类似deposite.url=127.0.0.1:的内容。你不需要有两个接口。@matejko219,如果是Eureka,我使用的是值和路径属性,而不是url,如果是非Eureka,我使用的是名称和url属性,所以不能这样处理。我知道配置文件,但请注意,我使用的是值和路径属性,而不是url,如果是非Eureka,我使用的是名称和url属性,所以不能这样处理。@abhihello123-您可以在中使用所有4个参数@假装客户。。。并在配置中根据需要设置required 2,同时将其他两个保持为默认值。有关defaultsEach的信息,请参见。该属性将具有默认值。您可以尝试使用每个属性的默认值设置每个配置文件中的所有属性。因此,您需要在注释中始终指定值和路径,同时仅选择性地将它们设置为自定义值。谢谢,我没有意识到我可以使用默认值。为我工作。很快就会发布我的答案。很高兴听到你取得了一些进展!:-