В системе микросервисов у меня есть интерфейс с аннотацией @AuthorizedFeignClient(name="send-email", url="http://localhost:8080/utils/api/email")
, в среде разработки он работает правильно, однако в среде Docker мне нужен параметр url, чтобы вместо имени контейнера Docker было localhost для работы в среде Docker.
Я попытался добавить в application-prod.yml конфигурацию:
containers-host:
gateway: jhipster-gateway
А в аннотации я поставил так:
@AuthorizedFeignClient(name="send-email", url="http://${containers-host.gateway}:8080/utils/api/email")
Однако при попытке сгенерировать .war он терпит неудачу:
org.springframework.beans.factory.BeanDefinitionStoreException: недопустимое определение bean-компонента с именем 'com.sistema.service.util.EmailClient', определенным в null: не удалось разрешить заполнитель 'container-host.gateway' в значении "http: // $ { контейнеры-host.gateway}: 8080 / utils / api / email "; вложенное исключение - java.lang.IllegalArgumentException: не удалось разрешить заполнитель 'container-host.gateway' в значении "http: // $ {container-host.gateway}: 8080 / utils / api / email" 2018-11-08 11 : 25: 22.101 ОШИБКА 64 --- [основная] osboot.SpringApplication: Не удалось запустить приложение
org.springframework.beans.factory.BeanDefinitionStoreException: недопустимое определение bean-компонента с именем 'com.sistema.service.util.EmailClient', определенным в null: не удалось разрешить заполнитель 'container-host.gateway' в значении "http: // $ { контейнеры-host.gateway}: 8080 / utils / api / email "; вложенное исключение - java.lang.IllegalArgumentException: не удалось разрешить заполнитель 'container-host.gateway' в значении "http: // $ {container-host.gateway}: 8080 / utils / api / email"
Как я могу установить имя хоста службы в соответствии с конфигурацией среды, в которой она работает?
Мой код, который терпит неудачу, выглядит так:
@AuthorizedFeignClient(name="send-email", url="http://${containers-host.gateway}:8080/utils/api/email")
public interface EmailClient {
@PostMapping("/send-email")
void sendEmail(String mail);
}