赞
踩
Spring Cloud Gateway 基于 Spring Boot 2,是 Spring Cloud 的全新项目。Gateway 旨在提供一种简单而有效的途径来转发请求,并为它们提供横切关注点。
Spring Cloud Gateway 中最重要的几个概念:
路由 Route:路由是网关最基础的部分,路由信息由一个 ID 、一个目的 URL 、一组断言工厂和一组 Filter 组成。如果路由断言为真,则说明请求的 URL 和配置的路由匹配。
断言 Predicate:Java 8 中的断言函数。Spring Cloud Gateway 中的断言函数输入类型是 Spring 5.0 框架中的 ServerWebExchange 。Spring Cloud Gateway 中的断言函数允许开发者去定义匹配来自 Http Request 中的任何信息,比如请求头和参数等。
过滤器 Filter:一个标准的 Spring Web Filter。Spring Cloud Gateway 中的 Filter 分为两种类型:Gateway Filter 和 Global Filter。过滤器 Filter 将会对请求和响应进行修改处理。
作为网关来说,网关最重要的功能就是协议适配和协议转发,协议转发也就是最基本的路由信息转发。
创建项目 gateway-server
,演示 Gateway 的基本路由转发功能,也就是通过 Gateway 的 Path 路由断言工厂实现 url 直接转发。
引入 Spring Cloud Gateway:Spring Cloud Routing > Gateway :
注意:Gateway 自己使用了 netty 实现了 Web 服务,此处『不需要引入 Spring Web』,如果引入了,反而还会报冲突错误,无法启动。
- <dependency>
- <groupId>org.springframework.cloud</groupId>
- <artifactId>spring-cloud-starter-gateway</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework.cloud</groupId>
- <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-actuator</artifactId>
- </dependency>
编写主入口程序代码,如下:
- @SpringBootApplication
- @EnableDiscoveryClient
- public class GatewayServerApplication {
-
- public static void main(String[] args) {
- SpringApplication.run(GatewayServerApplication.class, args);
- }
-
- /**
- * 配置
- */
- @Bean
- public RouteLocator customRouteLocator(RouteLocatorBuilder builder) {
- /**return builder.routes()
- .route(r -> r
- .path("/jd")
- .uri("http://www.jd.com/")
- .id("jd_route")
- ).build();*/
- return builder.routes().route(new Function<PredicateSpec, Route.AsyncBuilder>() {
- @Override
- public Route.AsyncBuilder apply(PredicateSpec predicateSpec) {
- return predicateSpec.path("/jd")
- .uri("http://www.jd.com/")
- .id("jd_route");
- }
- }).build();
- }
- }
3、application.yml
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。