springcloud api gateway属性文件声明变量

CHE*_*TIL 10 java properties-file microservices api-gateway spring-cloud-gateway

我在 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/**
Run Code Online (Sandbox Code Playgroud)

上述声明的变量是针对Spring Cloud Gateway的

我想在 application.properties 文件中声明这些相同的变量。我不想使用 yaml 文件。请帮助我实现这个目标谢谢

khw*_*ilo 12

您可以在文件中按如下方式定义变量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/**
Run Code Online (Sandbox Code Playgroud)


Cap*_*k10 3

刚刚更新了ans。

它应该类似于以下格式:

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}'"
Run Code Online (Sandbox Code Playgroud)

参考号 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