Как сделать, чтобы 2 аннотации переключались на другой профиль для одного и того же клиентского интерфейса Feign - PullRequest
0 голосов
/ 15 марта 2020

Как включить 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, и это проблема.

1 Ответ

1 голос
/ 15 марта 2020

Вы должны попытаться создать 2 application-{profileName}.properites файлы, установить необходимые параметры и запустить их с активным профилем.

Раздел 8 данной статьи также может быть вам полезен: https://www.baeldung.com/spring-profiles

...