Spring Cloud Gateway自动配置类解读

1. SpringCloudGateway最佳学习路径

Reactive Streams -> Reactor -> Spring WebFlux -> Spring Boot - > Spring Cloud -> Spring Cloud Gateway
规范 -> 实现 -> 框架 -> Spring Boot -> Spring Cloud -> Spring Cloud Gateway

2. Spring WebFluxAutoConfiguration

GatewayLoadBalancerClientAutoConfiguration -> GatewayClassPathWarningAutoConfiguration -> GatewayAutoConfiguration -> WebFluxAutoConfiguration -> HttpHandlerAutoConfiguration

3. Spring WebFlux和Spring Boot Gateway融合

Flux Web Filter : WeightCalculatorWebFilter
Flux HandlerMapping : RoutePredicateHandlerMapping

4. BeanDefintions in GatewayAutoConfiguration

Properties
HttpClientProperties
GlobalCorsProperties
GatewayProperties
SecureHeadersProperties

Basic Configuration
HttpClient
WebSocketService
ReactorNettyWebSocketClient
GatewayControllerEndpoint
PrincipalNameKeyResolver
StringToZonedDateTimeConverter

WebFilter
WeightCalculatorWebFilter

HandlerMapping
RoutePredicateHandlerMapping
FilteringWebHandler -> SimpleHandlerAdaptor support

Route Related
RouteLocatorBuilder
PropertiesRouteDefinitionLocator
InMemoryRouteDefinitionRepository
RouteDefinitionLocator
RouteDefinitionRouteLocator
CachingRouteLocator @Primary
RouteRefreshListener

HttpHeadersFilter
ForwardedHeadersFilter
RemoveHopByHopHeadersFilter
XForwardedHeadersFilter

GlobalFilter

FilterPriority
RemoveCachedBodyFilterOrdered.HIGHEST_PRECEDENCE
AdaptCachedBodyGlobalFilterOrdered.HIGHEST_PRECEDENCE + 1000
NettyWriteResponseFilter-1
ForwardPathFilter0
RouteToRequestUrlFilter10000
GatewayNoLoadBalancerClientAutoConfiguration$NoLoadBalancerClientFilter10100
WebsocketRoutingFilterOrdered.LOWEST_PRECEDENCE - 1
NettyRoutingFilterOrdered.LOWEST_PRECEDENCE
ForwardRoutingFilterOrdered.LOWEST_PRECEDENCE

RoutePredicateFactory
AfterRoutePredicateFactory
BeforeRoutePredicateFactory
BetweenRoutePredicateFactory
CookieRoutePredicateFactory
HeaderRoutePredicateFactory
HostRoutePredicateFactory
MethodRoutePredicateFactory
PathRoutePredicateFactory
QueryRoutePredicateFactory
ReadBodyPredicateFactory
RemoteAddrRoutePredicateFactory
WeightRoutePredicateFactory
CloudFoundryRouteServiceRoutePredicateFactory

GatewayFilterFactory

GatewayFilterFactoryDescription
AddRequestHeaderGatewayFilterFactory往ServerHttpRequest添加表头信息
SetRequestHeaderGatewayFilterFactory设置ServerHttpRequest的表头信息
RemoveRequestHeaderGatewayFilterFactory从ServerHttpRequest中移除表头信息
SecureHeadersGatewayFilterFactory添加安全相关的表头信息
AddResponseHeaderGatewayFilterFactory往ServerHttpResponse添加表头信息
SetResponseHeaderGatewayFilterFactory设置ServerHttpResponse的表头信息
RemoveResponseHeaderGatewayFilterFactory从ServerHttpResponse中移除表头信息
RewriteResponseHeaderGatewayFilterFactory重写指定ServerHttpResponse的Header的值,根据正则表达式匹配内容并进行替换
SetStatusGatewayFilterFactory设置ServerHttpResponse的状态
PrefixPathGatewayFilterFactory往ServerHttpRequest中添加路径前缀,保存请求URI到ServerWebExchange
RewritePathGatewayFilterFactory按指定正则表达式替换请求URI的path,保存请求URI到ServerWebExchange
StripPrefixGatewayFilterFactory从ServerHttpRequest去掉path的前缀信息,保存请求URI到ServerWebExchange
SetPathGatewayFilterFactory通过设置模板重新设置path,模板的值通过HostRoutePredicate和PathRoutePredicate设置
RequestHeaderToRequestUriGatewayFilterFactory如果ServerRequestHeader表头中存在请求URI,则将ServerWebExchange的请求URI设置为Header中的请求URI
AddRequestParameterGatewayFilterFactory往请求URI中添加参数
HystrixGatewayFilterFactory
FallbackHeadersGatewayFilterFactory
ModifyRequestBodyGatewayFilterFactory
ModifyResponseBodyGatewayFilterFactory
PreserveHostHeaderGatewayFilterFactory设置ServerWebExchange的属性 preserveHostHeader 为 TRUE
RedirectToGatewayFilterFactory重定向请求到指定URI
RequestRateLimiterGatewayFilterFactory限流处理
RetryGatewayFilterFactory
SaveSessionGatewayFilterFactory保存Session信息
RequestSizeGatewayFilterFactory请求大小过滤器,默认超过5000000Byte (5M) 返回错误

5. Enviroment属性优先级

bootstrap > application.yml > bootstrap.yml

6. ApplicationContext更新

参考

Hystrix之@EnableCircuitBreaker源码解读
spring-cloud-commons reference
一个可供中小团队参考的微服务架构技术栈
Spring Cloud 微服务架构学习笔记与示例
Reactive Programming 带来哪些显著的编程变化
Webflux快速入门
4_webflux服务端开发
在Sprint Boot实现Spring WebMVC与WebFlux的比较
关于java的响应式编程框架----SpringReactor
Spring boot WebFlux 简介
Springboot 2.0—WebFlux请求处理流程
第10课:WebFlux 源码剖析
详解SpringCloud-gateway动态路由两种方式,以及路由加载过程
Spring Cloud 是如何实现热更新的
深入理解SpringCloud之引导程序应用上下文
Spring Cloud Context: Application Context Services
Spring Cloud Gateway初体验
Spring Cloud Gateway 之Predict篇
spring cloud gateway之filter篇
spring cloud gateway 之限流篇
史上最简单的 SpringCloud 教程 | 终章
archaius简介
API网关spring cloud gateway和负载均衡框架ribbon实战
Spring Cloud Gateway – 熔断限流
聊聊spring cloud gateway的RetryGatewayFilter
Spring Cloud Gateway 内置的过滤器工厂
Spring Cloud Gateway 数据库存储路由信息的扩展方案

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值