我正在做一项工作,通过使用以下代码在运行时将路由动态设置到 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;
有任何想法吗?非常感谢!!