SpringCloudAlibaba整合服务网关GateWay教程

 更新时间:2026年01月15日 10:55:53   作者:fanaozhe  
文章介绍了Spring Cloud Gateway和Zuul的区别,并详细描述了如何使用Gateway进行服务转发和自定义TokenFilter实现参数拦截访问

Gateway属于Springcloud自研的第二代微服务网关框架,Zuul属于netfix公司开源的产品,属于第一代微服务网关;

1 引入依赖

 <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-gateway -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
            <version>2.2.0.RELEASE</version>
        </dependency>

2 配置文件

server:
  port: 80
####服务网关名称
spring:
  application:
    name: springcloudalibaba-gateway
  cloud:
    gateway:
      discovery:
        locator:
          ####开启以服务id去注册中心上获取转发地址
          enabled: true
        ###路由策略
      routes:
        ##路由id
        - id: producer
          #### 基于lb负载均衡形式转发(通过注册中心服务名称,获取真实访问地址)
          uri: lb://springcloudalibaba-producer
          filters:
            - StripPrefix=1
          ###匹配规则
          predicates:
            - Path=/producer/**
    nacos:
      discovery:
        server-addr: nacosIp地址:8848
        ### 127.0.0.1/producer/***  转发到http://127.0.0.1:8080/***

3 访问测试

此时访问127.0.0.1/producer/getPort  则转发到springcloudalibaba-producer服务:127.0.0.1:8080/producer/getPort 

4 案例:自定义TokenFilter实现参数拦截

@Component
public class TokenFilter implements GlobalFilter {
    @Override
    public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
        String token = exchange.getRequest().getQueryParams().getFirst("token");
        if(token==null||token.isEmpty()){
            ServerHttpResponse response = exchange.getResponse();
            response.setStatusCode(HttpStatus.BAD_GATEWAY);
            String msg = "token not is null";
            DataBuffer buffer = response.bufferFactory().wrap(msg.getBytes());
            return response.writeWith(Mono.just(buffer));
        }
        return chain.filter(exchange);
    }
}

访问:127.0.0.1:8080/producer/getPort 

访问:127.0.0.1:8080/producer/getPort ?token="111"

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 解决Java Calendar类set()方法的陷阱

    解决Java Calendar类set()方法的陷阱

    这篇文章主要介绍了解决Java Calendar类set()方法的陷阱,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • Java客户端通过HTTPS连接到Easysearch实现过程

    Java客户端通过HTTPS连接到Easysearch实现过程

    这篇文章主要为大家介绍了Java客户端通过HTTPS连接到Easysearch实现过程详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11
  • Java下http下载文件客户端和上传文件客户端实例代码

    Java下http下载文件客户端和上传文件客户端实例代码

    这篇文章主要介绍了Java下http下载文件客户端和上传文件客户端实例代码,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-12-12
  • Java 中的Map遍历并删除的几种方法对比分析

    Java 中的Map遍历并删除的几种方法对比分析

    在Java中,遍历并删除Map中的元素有几种常见的方法,每种方法都有其适用场景和优缺点,下面给大家分享Java 中的Map遍历并删除的几种方法对比分析,感兴趣的朋友一起看看吧
    2025-06-06
  • Spring Boot Filter 过滤器的使用方式

    Spring Boot Filter 过滤器的使用方式

    这篇文章主要介绍了Spring Boot Filter 过滤器的使用方式,文章通过围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-09-09
  • Spring Boot Actuator入门指南

    Spring Boot Actuator入门指南

    SpringBootActuator是SpringBoot提供的一系列产品级特性,用于监控应用程序、收集元数据和运行情况,通过添加依赖,可以通过HTTP或JMX与外界交互,本文介绍Spring Boot Actuator的相关知识,感兴趣的朋友一起看看吧
    2025-02-02
  • SpringCloud Gateway之请求应答日志打印方式

    SpringCloud Gateway之请求应答日志打印方式

    这篇文章主要介绍了SpringCloud Gateway之请求应答日志打印方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • 前端发送的请求Spring如何返回一个文件详解

    前端发送的请求Spring如何返回一个文件详解

    这篇文章主要给大家介绍了关于前端发送的请求Spring如何返回一个文件的相关资料,文中通过代码介绍的非常详细,对大家的学习或者工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2024-09-09
  • SpringBoot事件发布与监听超详细讲解

    SpringBoot事件发布与监听超详细讲解

    今天去官网查看spring boot资料时,在特性中看见了系统的事件及监听章节,所以下面这篇文章主要给大家介绍了关于SpringBoot事件发布和监听的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-11-11
  • Spring解读@Component和@Configuration的区别以及源码分析

    Spring解读@Component和@Configuration的区别以及源码分析

    通过实例分析@Component和@Configuration注解的区别,核心在于@Configuration会通过CGLIB代理确保Bean的单例,而@Component不会,在Spring容器中,使用@Configuration注解的类会被CGLIB增强,保证了即使在同一个类中多次调用@Bean方法
    2024-10-10

最新评论