Spring cloud gateway 源码分析02 网关路由功能01
核心加载,查找路由函数如下
获取路由route后,再调用validateRoute校验
创建一个类型为 org.springframework.cloud.gateway.config.GatewayProperties
的 Bean 对象,用于加载配置文件配置的 RouteDefinition / FilterDefinition
看一下sample中的路由例子,如下
指定一个filter,处理后转发到指定的uri
Route 的构建,分成同步和异步,入参都为RouteDefinition
看加载RouteDefinition
RouteDefinition,通过字符串text 初始化
PredicateDefinition 初始化同理
FilterDefinition 同理
从配置文件读取路由配置
routes
属性,路由配置。通过 spring.cloud.gateway.routes
配置
路由存储
也就是更新本地内存map的routes数据
DiscoveryClientRouteDefinitionLocator 路由的发现,获取注册在注册中心的服务列表,生成对应的 RouteDefinition 数组。
1.首先解析配置文件的表达式,获取includePredicate
2.根据解析出的urlExpr和服务实例serviceInstance,构造出routeDefinition
3.再解析出配置文件中的predicate,添加到RouteDefinition中
4.继续从配置文件中解析出filters,添加到RouteDefinition中
5.最后返回RouteDefinition