【发布时间】:2019-03-16 06:03:39
【问题描述】:
我想自定义发现定位器行为。例如,我的案例是从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)+'/**'
【问题讨论】:
标签: spring spring-cloud spring-cloud-gateway