// SpringCloud组件 gateway 工具 // 统一解决跨域 // 负载均衡 根据服务名 自动 负载均衡 // 熔断降级 // 统一鉴权 // 请求过滤 // 路径重写 // 限流保护 // gateway 工具 三个组成 // 路由 断言 过滤 // gateway 使用 // 1. 创建 gateway 模块 // 2.在模块中 引入相关依赖
<dependencies> <!-- 自定义的工具类--> <dependency> <groupId>com.schoolWeb</groupId> <artifactId>common_utils</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> <!-- nacos的注册中心--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> <!-- gateway 核心依赖--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-gateway</artifactId> </dependency> <!--gson--> <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> </dependency> <!--服务调用--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency> </dependencies>
// 3. 创建启动类 // 4. 创建 配置文件 配置 网关需要的配置
# 端口号
server.port=8009
#服务名 服务名称 不要写 下划线 _ 否则 分布式 会报错
spring.application.name=service-gateway
# 环境设置 dev test prod
spring.profiles.active=dev
#nacos 服务地址
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
#使用服务发现路由
spring.cloud.gateway.discovery.locator.enabled=true
# 例子:
#设置路由id 一般写你 服务模块的名字
#spring.cloud.gateway.routes[0].id=service-cms
#设置路由的uri lb://nacos注册服务名称
#spring.cloud.gateway.routes[0].uri=lb://service-cms
#设置路由断言,代理servicerId为auth-service的/auth/路径 你的路径 匹配规则
# /*/acl/** 表示 第一个随便匹配 第二个 匹配 acl 第三个匹配所有
# 一般是你 控制器这个注解里的 @RequestMapping("/cmsservice/banner") 路径
#spring.cloud.gateway.routes[0].predicates= Path=/*/acl/**
#配置service-cms服务
spring.cloud.gateway.routes[0].id=service-cms
spring.cloud.gateway.routes[0].uri=lb://service-cms
spring.cloud.gateway.routes[0].predicates= Path=/cmsservice/**
#配置service-edu服务
spring.cloud.gateway.routes[1].id=service-edu
spring.cloud.gateway.routes[1].uri=lb://service-edu
spring.cloud.gateway.routes[1].predicates= Path=/eduservice/**
#配置service-msm服务
spring.cloud.gateway.routes[2].id=service-msm
spring.cloud.gateway.routes[2].uri=lb://service-msm
spring.cloud.gateway.routes[2].predicates= Path=/sms/**
#配置service-oss服务
spring.cloud.gateway.routes[3].id=service-oss
spring.cloud.gateway.routes[3].uri=lb://service-oss
spring.cloud.gateway.routes[3].predicates= Path=/oss/**
#配置service-ucenter服务
spring.cloud.gateway.routes[4].id=service-ucenter
spring.cloud.gateway.routes[4].uri=lb://service-ucenter
spring.cloud.gateway.routes[4].predicates= Path=/ucentermember/**
//5. 启动网关服务
// 通过网关 统一解决
// 跨域问题 要么在 网关里处理 要么 在模块里处理 加个注解 只能在第一个地方解决 两个地方都配置会出问题
// 权限问题
// 异常问题
// 等等 一些公共的处理 都可以在网关模块里处理
// 具体代码 一般固定写法 代码分享在 github上
javaUtils/gateway at main · Json870422471/javaUtils · GitHub