springcloud api网关属性文件声明变量
Posted
技术标签:
【中文标题】springcloud api网关属性文件声明变量【英文标题】:springcloud api gateway properties file declaring variables 【发布时间】:2021-02-16 21:06:15 【问题描述】:我在 springboot 应用中有 application.yaml,如下所示
spring:
cloud:
gateway:
routes:
- id: pgService
uri: http://localhost:2005/
predicates:
- Path=/employee/**
- id: inMateService
uri: http://localhost:2006/
predicates:
- Path=/consumer/**
上面声明的变量是针对spring cloud gateway的
我想在 application.properties 文件中声明这些相同的变量。 我不想使用 yaml 文件。请帮助我实现这一目标 谢谢
【问题讨论】:
【参考方案1】:刚刚更新了答案。
应该更类似于这种格式:
spring.cloud.gateway.discovery.locator.predicates[0].name: Path
spring.cloud.gateway.discovery.locator.predicates[0].args[pattern]: "'/'+serviceId+'/**'"
spring.cloud.gateway.discovery.locator.predicates[1].name: Host
spring.cloud.gateway.discovery.locator.predicates[1].args[pattern]: "'**.foo.com'"
spring.cloud.gateway.discovery.locator.filters[0].name: Hystrix
spring.cloud.gateway.discovery.locator.filters[0].args[name]: serviceId
spring.cloud.gateway.discovery.locator.filters[1].name: RewritePath
spring.cloud.gateway.discovery.locator.filters[1].args[regexp]: "'/' + serviceId + '/(?<remaining>.*)'"
spring.cloud.gateway.discovery.locator.filters[1].args[replacement]: "'/$remaining'"
参考。 https://cloud.spring.io/spring-cloud-gateway/multi/multi__configuration.html
如果您使用的是 intelliJ,下面的插件对于在 .yaml 和 .properties 之间转换格式非常有帮助: https://plugins.jetbrains.com/plugin/13804-convert-yaml-and-properties-file
【讨论】:
【参考方案2】:您可以在application.properties
文件中定义如下变量:
spring.cloud.gateway.routes[0].id=pgService
spring.cloud.gateway.routes[0].uri=http://localhost:2005/
spring.cloud.gateway.routes[0].predicates[0]=Path=/employee/**
spring.cloud.gateway.routes[1].id=inMateService
spring.cloud.gateway.routes[1].uri=http://localhost:2006/
spring.cloud.gateway.routes[1].predicates[0]=Path=/consumer/**
【讨论】:
【参考方案3】:它对我有用
spring.cloud.gateway.routes[0].id=USER-SERVICE
spring.cloud.gateway.routes[0].uri=lb://USER-SERVICE
spring.cloud.gateway.routes[0].predicates[0].name=Path
spring.cloud.gateway.routes[0].predicates[0].args[pattern]=/user/**
spring.cloud.gateway.routes[1].id=USER-SERVICE
spring.cloud.gateway.routes[1].uri=lb://USER-SERVICE
spring.cloud.gateway.routes[1].predicates[0].name=Path
spring.cloud.gateway.routes[1].predicates[0].args[pattern]=/department/**
【讨论】:
以上是关于springcloud api网关属性文件声明变量的主要内容,如果未能解决你的问题,请参考以下文章