CompositeRouteLocator
,组合多种 RouteLocator 的实现类,为 RoutePredicateHandlerMapping 提供统一入口访问路由
CachingRouteLocator
,缓存路由的 RouteLocator 实现类。RoutePredicateHandlerMapping 调用 CachingRouteLocator 的 RouteLocator#getRoutes()
方法,获取路由。
刷新缓存
RouteDefinitionRouteLocator 获取路由route
1.先获取RouteDefinition,然后调用convertToRoute转换成route,添加对应的predicate和filter
2.先看下获取predicate
2.1 先从本地缓存获取factory,获取不到就抛出异常
2.2 然后根据factory 加载出config配置
2.3 先从缓存中获取,如果缓存中没有,就构建一个http请求来获取predicate
3.获取过滤器filters
3.1 先添加默认的过滤器 defaultFilters
3.2 再添加配置的过滤器
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
路由相关的工厂,继承图如下
RoutePredicateFactory 作为核心接口,创建routePredicate, apply方法如下
AfterRoutePredicateFactory 请求时间满足在配置时间之后
BeforeRoutePredicateFactory 请求时间满足在配置时间之前
BetweenRoutePredicateFactory 请求时间满足在配置时间之间
CloudFoundryRouteServiceRoutePredicateFactory Paas 云平台
CookieRoutePredicateFactory 请求指定 Cookie 正则匹配指定值。
HeaderRoutePredicateFactory 请求指定 Cookie 正则匹配指定值。
HostRoutePredicateFactory 请求 Host 匹配指定值。
MethodRoutePredicateFactory 请求 Method 匹配指定值。
PathRoutePredicateFactory 请求 Path 匹配指定值
QueryRoutePredicateFactory 请求 QueryParam 匹配指定值
RemoteAddrRoutePredicateFactory: 请求来源 IP 在指定范围内
WeightRoutePredicateFactory :请求权重在指定范围内