Я хочу настроить поведение локатора обнаружения.Одним из моих случаев является, например, маршрутизация от gateway_host/prohibitions
до службы с именем prohibitions-ui
.Для этой цели я использую эту конфигурацию:
spring:
cloud:
gateway:
discovery:
locator:
enabled: true
lower-case-service-id: true
filters: PreserveHostHeader
include-expression: serviceId.endsWith('-UI')
predicates: Path='/'+serviceId.substring(0,serviceId.indexOf('-UI'))+'/**'
Тогда ошибка:
Failed to bind properties under 'spring.cloud.gateway.discovery.locator.predicates' to java.util.List<org.springframework.cloud.gateway.handler.predicate.PredicateDefinition>:
Reason: failed to convert java.lang.String to org.springframework.cloud.gateway.handler.predicate.PredicateDefinition
Я думаю, эта ошибка растет из-за двух аргументов, переданных методу substring
.Если я изменяю вызов метода на substring(0)
, тогда приложение запускается успешно, но такой конфиг для меня не имеет смысла: predicates: Path='/'+serviceId.substring(0)+'/**'