网关 Spring-Cloud-Gateway 源码解析 —— 网关初始化

本文深入解析了Spring Cloud Gateway的启动初始化过程,包括GatewayAutoConfiguration的各个组件如NettyConfiguration、GlobalFilter等的初始化,以及如何通过配置开启和关闭网关。文章适合对Spring Cloud Gateway感兴趣的读者,旨在帮助读者理解其内部工作原理。
摘要由CSDN通过智能技术生成

本文主要基于 Spring-Cloud-Gateway 2.0.X M4

摘要: 原创出处 http://www.iocoder.cn/Spring-Cloud-Gateway/init/ 「芋道源码」欢迎转载,保留摘要,谢谢!


������关注微信公众号:【芋道源码】有福利:
1. RocketMQ / MyCAT / Sharding-JDBC 所有源码分析文章列表
2. RocketMQ / MyCAT / Sharding-JDBC 中文注释源码 GitHub 地址
3. 您对于源码的疑问每条留言将得到认真回复。甚至不知道如何读源码也可以请教噢
4. 新的源码解析文章实时收到通知。每周更新一篇左右
5. 认真的源码交流微信群。


1. 概述

本文主要分享 Spring Cloud Gateway 启动初始化的过程

在初始化的过程中,涉及到的组件会较多,本文不会细说,留到后面每篇文章针对每个组件详细述说。

那么这有什么意义呢?先对 Spring Cloud Gateway 内部的组件有整体的印象。


在官方提供的实例项目 spring-cloud-gateway-sample ,我们看到 GatewaySampleApplication 上有 @EnableAutoConfiguration 注解。因为该项目导入了 spring-cloud-gateway-core 依赖库,它会扫描 Spring Cloud Gateway 的配置。

org.springframework.cloud.gateway.config 包下,我们可以看到四个配置类 :

  • GatewayAutoConfiguration
  • GatewayClassPathWarningAutoConfiguration
  • GatewayLoadBalancerClientAutoConfiguration
  • GatewayRedisAutoConfiguration

它们的初始化顺序如下图 :


推荐 Spring Cloud 书籍

推荐 Spring Cloud 视频

2. GatewayClassPathWarningAutoConfiguration

Spring Cloud Gateway 2.x 基于 Spring WebFlux 实现。

org.springframework.cloud.gateway.config.GatewayClassPathWarningAutoConfiguration ,用于检查项目是否正确导入 spring-boot-starter-webflux 依赖,而不是错误导入 spring-boot-starter-web 依赖。

点击链接 链接 查看 GatewayClassPathWarningAutoConfiguration 的代码实现。

3. GatewayLoadBalancerClientAutoConfiguration

org.springframework.cloud.gateway.config.GatewayLoadBalancerClientAutoConfiguration ,初始化 LoadBalancerClientFilter ,点击 链接 查看代码。

《Spring-Cloud-Gateway 源码解析 —— 过滤器 (4.4) 之 LoadBalancerClientFilter 负载均衡》 详细解析 LoadBalancerClientFilter 的代码实现。

4. GatewayRedisAutoConfiguration

org.springframework.cloud.gateway.config.GatewayRedisAutoConfiguration ,初始化 RedisRateLimiter 。

RequestRateLimiterGatewayFilterFactory 基于 RedisRateLimiter 实现网关的限流功能,在 《Spring-Cloud-Gateway 源码解析 —— 过滤器 (4.10) 之 RequestRateLimiterGatewayFilterFactory 请求限流》 详细解析相关的代码实现。

5. GatewayAutoConfigurat

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Cloud GatewaySpring Cloud提供的一种网关解决方案,它旨在为微服务架构提供一种简单有效的统一的API路由管理方式。相比于之前的Spring Cloud Netflix Zuul,Spring Cloud Gateway使用了非阻塞的API和Websockets,底层使用的是Netty和WebFlux。 要创建一个Spring Cloud实战项目使用Gateway,你需要进行以下几个步骤: 1. 首先,新建一个Gateway网关项目。 2. 在该项目的pom.xml文件中添加如下引用: - org.springframework.cloud:spring-cloud-starter-gateway:这是Spring Cloud Gateway的核心依赖。 - org.springframework.cloud:spring-cloud-starter-netflix-eureka-client:如果你的项目使用了Eureka作为服务注册中心,可以添加这个依赖。 - org.springframework.boot:spring-boot-starter-actuator:这是Spring Boot的监控依赖,用来提供健康检查、指标收集等功能。 3. 确保你的项目使用了Spring 5.0和Spring Boot 2.0以及Project Reactor等相关技术。 需要注意的是,在引用依赖时,不要同时加入web依赖(不要引用webmvc),否则会导致初始化报错。而是应该添加webflux依赖。 这样,你就可以使用Spring Cloud Gateway来创建一个实战项目了。根据你的具体需求,你可以配置路由规则、添加断路器、使用限流等功能来实现统一的API路由管理。 总结一下,要创建一个Spring Cloud实战项目使用Gateway,你需要新建一个Gateway网关项目,并在项目的pom.xml文件中引入Spring Cloud Gateway、Eureka Client和Actuator的依赖,并配置相应的路由规则和功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值