如何在Spring Cloud Gateway中获取可用的过滤器列表?

时间:2018-09-05 08:20:23

标签: dynamic filter predicate spring-cloud-gateway

我正在通过使用以下代码在运行时动态设置路由到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;

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

1 个答案:

答案 0 :(得分:0)

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

@Autowired
private List<GatewayFilterFactory> gatewayFilters;

@Autowired
private List<RoutePredicateFactory> routePredicates;