【问题标题】:How to get available filters list in spring cloud gateway?如何在 Spring Cloud Gateway 中获取可用的过滤器列表?
【发布时间】:2018-09-05 08:20:23
【问题描述】:

我正在做一项工作,通过使用以下代码在运行时将路由动态设置到 Spring Cloud Gateway 中,

@Autowired
@Qualifier("inMemoryRouteDefinitionRepository")
private RouteDefinitionWriter routeDefinitionWriter;


RouteDefinition routeDefinition = ...; // my own route
routeDefinitionWriter.save(Mono.just(routeDefinition)).subscribe();
this.publisher.publishEvent(new RefreshRoutesEvent(this));

无论里面的谓词和过滤器是否可用甚至存在,都可以成功添加路由。如果存在不存在谓词或过滤器的路由,则会发生异常。

问题是如何在运行时获取可用的谓词和过滤器列表,所以我可以检查传入的RouteDefinition是否有效。

到目前为止,我已经在 RouteDefinitionRouteLocator 类中发现了可用的谓词和过滤器列表,并且我可以自动装配它的一个实例。但这似乎不是解决问题的好方法。

@Autowired
@Qualifier("routeDefinitionRouteLocator")
private RouteDefinitionRouteLocator routeDefinitionRouteLocator;

有什么想法吗?非常感谢!!

【问题讨论】:

    标签: dynamic filter predicate spring-cloud-gateway


    【解决方案1】:

    您可以将谓词和过滤器自动装配为列表。

    @Autowired
    private List<GatewayFilterFactory> gatewayFilters;
    
    @Autowired
    private List<RoutePredicateFactory> routePredicates;
    

    【讨论】:

      猜你喜欢
      • 2020-08-26
      • 2018-07-09
      • 2020-05-31
      • 2019-10-07
      • 2020-11-04
      • 2018-06-21
      • 2020-11-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多