我正在通过使用以下代码在运行时动态设置路由到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;
有什么想法吗?非常感谢!
答案 0 :(得分:0)
您可以自动将谓词和过滤器自动连接为列表。
@Autowired
private List<GatewayFilterFactory> gatewayFilters;
@Autowired
private List<RoutePredicateFactory> routePredicates;