GateWay利用手册 [复制链接]
发表于 2025-12-18 15:09:25 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
好的,下面是优化后的版本。为了进步可读性和规范性,我对内容举行告终构化、简化了部分代码,同时增长相识释阐明,便于明白。
<hr> 1. 引入依赖

在 pom.xml 中添加以下依赖:
  1. <dependencies>
  2.     <!-- Spring Cloud Gateway:提供API网关功能 -->
  3.     <dependency>
  4.         <groupId>org.springframework.cloud</groupId>
  5.         <artifactId>spring-cloud-starter-gateway</artifactId>
  6.     </dependency>
  7.     <!-- Spring Cloud Alibaba Nacos Discovery:用于服务发现 -->
  8.     <dependency>
  9.         <groupId>com.alibaba.cloud</groupId>
  10.         <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
  11.     </dependency>
  12.     <!-- Spring Cloud Loadbalancer:提供客户端负载均衡 -->
  13.     <dependency>
  14.         <groupId>org.springframework.cloud</groupId>
  15.         <artifactId>spring-cloud-starter-loadbalancer</artifactId>
  16.     </dependency>
  17. </dependencies>
复制代码
2. 启动类 (GateApplication.java)

界说主启动类,启动 Spring Boot 应用:
  1. @SpringBootApplication  // 标明这是Spring Boot应用的入口
  2. public class GateApplication {
  3.    
  4.    
  5.     public static void main(String[] args) {
  6.    
  7.    
  8.         SpringApplication.run(GateApplication.class, args);  // 启动应用
  9.     }
  10. }
复制代码
3. 设置文件 (application.yml)

设置网关的根本设置、Nacos 服务发现以及路由规则。
  1. server:
  2.   port: 8080  # 配置网关监听的端口
  3. spring:
  4.   application:
  5.     name: gateway  # 应用名称,用于 Nacos 等服务发现
  6.   cloud:
  7.     nacos:
  8.       discovery:
  9.         server-addr: xiaotianlong.xyz:8848  # 配置 Nacos 服务器地址
  10.     gateway:
  11.       routes:  # 配置网关的路由规则
  12.         # 路由规则 1
  13.         - id: service_name  # 路由的唯一ID
  14.           uri: lb://service_name  # 使用负载均衡访问注册到 Nacos 中的服务
  15.           predicates:
  16.             - Path=/user/**  # 请求路径以 `/user/` 开头时触发此路由
  17.           filters:
  18.             - AddRequestHeader=X-Request-Foo, Bar  # 添加请求头
  19.         # 路由规则 2
  20.         - id: service_name2
  21.           uri: lb://service_name2
  22.           predicates:
  23.             - Path=/order/**  # 请求路径以 `/order/` 开头时触发此路由
复制代码
4. 自界说全局过滤器

界说一个全局过滤器,记载哀求的时间并打印日记。
  1. @Component  // 声明为Spring组件
  2. public class MyGlobalFilter implements GlobalFilter, Ordered {
  3.    
  4.    
  5.     @Override
  6.     public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
  7.    
  8.    
  9.         // 记录请求开始时间
  10.         System.out.println("请求开始时间: " + System.currentTimeMillis());
  11.         
  12.         // 放行请求
  13.         return chain.filter(exchange)
  14.                 .then(Mono.fromRunnable(() -> {
  15.    
  16.    
  17.                     // 记录请求结束时间
  18.                     System.out.println("请求结束时间: " + System.currentTimeMillis());
  19.                 }));
  20.     }
  21.     @Override
  22.     public int getOrder() {
  23.    
  24.    
  25.         // 过滤器的执行顺序,数字越小优先级越高
  26.       
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!qidao123.com:ToB企服之家,中国第一个企服评测及软件市场,开放入驻,技术点评得现金
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表