Как включить 2 аннотации для разных профилей для одного и того же клиентского интерфейса Feign?
Я использую клиентский интерфейс Feign, который имеет следующий код при использовании с URL-адресом балансировщика нагрузки. Это я называю не-Eureka для справки:
@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 Profile, так что если имя профиля = "Eureka", аннотация Eureka активна, а не-Eureka активна в противном случае.
Я должен сделать это как-то в одном имени интерфейса, так как Я использую его следующим образом:
private final DepositFeignClient depositFeignClient;
//other code
DepositResponse depResponse =
depositFeignClient.getDepositDetails(accountNumber);
//other code
Пожалуйста, дайте мне знать, если каким-либо образом использование @Profile, @ConditionalOnProperty
или что-то еще поможет решить мою цель. Я использую Spring-boot 2.x и Java 8
Edit Просьба учесть, что в случае Eureka я использую атрибуты path
и value
и не Eureka case Я использую атрибуты name и url, и это проблема.