一、概述
在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类。
@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类。