设置 Spring 云网关通过环境变量过滤属性

Setting Spring cloud Gateway Filters properties through env variables

我创建了 2 个过滤器,比如说 CustomFilter1 和 CustomFilter2,它们的配置已设置

spring:
  cloud:
    gateway:
      default-filters:
        - name: CustomRequestFilter1
          args:
            key1: someValue 
        - name: CustomRequestFilter2
          args:
            key2: someVvalue        

注意:这些默认值实际上是在java中设置的,我是这样写的,没有详细说明class,但问题还是一样。

如何通过环境变量以干净的方式覆盖 key1/key2 的值,而不会弄乱顺序?

我发现的一种方法是使用 spring.cloud.gateway.default-filters[0].args[key1] = "someOtherValue",但这种方法需要知道 application.yml 中定义的过滤器的顺序。此外,它看起来像使用这个,第二个 CustomRequestFilter2 过滤器根本没有被调用。

我们如何通过环境变量设置这些嵌套值?

最后,我决定采用 Spring 云网关 SecureHeadersGatewayFilterFactory approach, where they used SecureHeadersProperties 外部属性,即 @ConfigurationProperties