spring cloud gateway 以模块形式嵌入 java 项目,需引入核心依赖、配置路由与服务发现、对接 nacos 实现动态路由,并通过 globalfilter 添加鉴权、限流、日志等过滤功能。

直接在 Java 项目中集成 Spring Cloud Gateway,核心是把它作为一个独立的 Spring Boot 模块引入,配置路由规则、对接注册中心,并通过过滤器扩展功能。它不是“部署一个中间件”,而是以代码形式嵌入项目体系,和微服务协同工作。
创建网关模块并引入依赖
用 Spring Initializr 或手动新建 Maven 模块(如 gateway),关键依赖包括:
- spring-cloud-starter-gateway:网关核心
- spring-cloud-starter-alibaba-nacos-discovery(或 eureka):服务发现支持
- spring-cloud-starter-alibaba-nacos-config(可选):动态配置管理
- 排除
spring-boot-starter-web:Gateway 基于 WebFlux,与传统 MVC 冲突
配置基础路由与服务发现
在 application.yml 中定义简单路由,并启用服务发现:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
spring:
application:
name: gateway
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
gateway:
routes:
- id: user-service
uri: lb://user-service
predicates:
- Path=/api/users/**
filters:
- StripPrefix=1
说明:lb:// 表示使用负载均衡访问注册中心里的服务;StripPrefix=1 会去掉匹配路径中的第一级前缀(如 /api/users/123 → 转发为 /users/123)。
对接 Nacos 实现动态路由
把路由规则从 yml 移到 Nacos 配置中心,就能热更新不重启:
- 在 Nacos 创建配置,Data ID 为
gateway-dev.yaml,Group 默认DEFAULT_GROUP - 内容格式与 yml 中
spring.cloud.gateway.routes一致 - 启动类加
@RefreshScope,网关自动监听配置变更
添加常用功能过滤器
比如统一鉴权、限流、日志,可通过自定义 GlobalFilter 实现:
- 写一个实现
GlobalFilter的类,用@Order(1)控制执行顺序 - 从请求头提取 JWT,调用鉴权服务验证,失败直接返回 401
- 限流推荐用
RequestRateLimiter+ Redis,配置replenishRate和burstCapacity - 日志记录建议只打关键字段(路径、方法、耗时、状态码),避免影响性能
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










