微服务-网关Spring Gateway-Java代码配置路由

442 阅读1分钟

一、概述

在Spring Gateway入门中介绍了使用application.yml配置路由的方式,本章节介绍使用Java配置路由的方式。

二、实现

2.1 注释application.yml路由配置

server:
  port: 9003
spring:
  application:
    name: gateway-demo
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
#    gateway:
#      routes: # 路由配置
#        - id: nacos-service # id为nacos-service的路由配置
#          uri: lb://nacos-demo # 访问nacos上的nacos-demo服务,lb是load balance的缩写,代表负载均衡
#          filters:
#            - StripPrefix=2 # 定义截取的路径个数,比如网关访问路径/api/nacos/firstApi/sayHello,如果定义为2,则内部访问nacos-demo服务路径为/firstApi/sayHello
#          predicates:
#            - Path=/api/nacos/** # 网关路径定义,以/api/nacos开头的服务都访问nacos-demo服务

2.2 定义RouteLocator

新增package,名称为route,新增RouteConfig类。

image.png

@Configuration
public class RouteConfig {
    @Bean
    public RouteLocator customizeRoute(RouteLocatorBuilder builder) {
        RouteLocatorBuilder.Builder routes = builder.routes();
        routes.route("nacos-service",
                r -> r.path("/api/nacos/**")
                        .filters(filter -> filter.stripPrefix(2))
                        .uri("lb://nacos-demo"));
        return routes.build();
    }
}

以上的Java代码配置等价于application.yml注释的配置部分。有一点不一样的地方,path相当于yml中的predicate定义的Path配置。

三、总结

采用Java配置的方式,主要是定义RouteLocator类。

四、源码

gitee.com/animal-fox_…