【Spring Cloud】Gateway组件的三种使用方式
Spring Cloud Gateway是Spring Cloud的一个全新项目,该项目是基于Spring 5.0,Spring WebFlux和Project Reactor等技术开发的网关,它旨在为微服务架构提供一种简单有效的统一的API路由管理方式。
以下是Spring Cloud Gateway的三种使用方式:
- 作为一个独立的gateway服务
@SpringBootApplication
public class GatewayApplication {
public static void main(String[] args) {
SpringApplication.run(GatewayApplication.class, args);
}
@RestController
public class GatewayController {
@RequestMapping("/hello")
public Mono<String> hello() {
return Mono.just("hello");
}
}
}
在这种模式下,gateway服务将接收所有的请求,然后将请求转发到后端的微服务。
- 作为一个全局的过滤器
@Component
public class CustomGlobalFilter implements GlobalFilter, Ordered {
@Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
// add your logic here
return chain.filter(exchange);
}
@Override
public int getOrder() {
// set order of the filter
return 0;
}
}
在这种模式下,gateway服务将作为一个全局的过滤器,对所有的请求进行过滤。
- 作为一个Predicate的条件
@Configuration
public class GatewayConfig {
@Bean
public RouteLocator customRouteLocator(RouteLocator routeLocator) {
Predicate predicate = path("/hello").and(host("**.hello.com"));
return routeLocator.route("path_route", predicate, exchange -> {
// add your logic here
return null;
});
}
}
在这种模式下,gateway服务将根据Predicate定义的条件,对请求进行路由。
以上就是Spring Cloud Gateway的三种使用方式,分别适应不同的场景。
评论已关闭