首页 > 技术文章 > Spring Cloud入门系列(十五)- 服务网关之Gateway

amigou 2021-10-17 15:01 原文

GateWay的网关路由 有两种配置方式:

  • 通过 application.yml 进行配置
  • 通过 java代码 的方式进行配置

这一章将探讨通过 java代码的方式 配置路由。

package com.banana.springcloud.config;

import org.springframework.cloud.gateway.route.RouteLocator;
import org.springframework.cloud.gateway.route.builder.RouteLocatorBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * 以编码的方式实现路由
 * 官网:https://cloud.spring.io/spring-cloud-static/spring-cloud-gateway/2.2.1.RELEASE/reference/html/#gatewayfilter-factories
 * @author layman
 * @date 2021/1/19
 */
@Configuration
public class GateWayConfig {

    /**
     * 配置一个ID为 first 的路由规则
     * 当访问地址:http://localhost:9527/guonei 时会自动转发到地址 http://news.baidu.com/guonei
     * @param routeLocatorBuilder
     * @return RouteLocator
     */
    @Bean
    public RouteLocator CustomerRouteLocatorFirst(RouteLocatorBuilder routeLocatorBuilder){
        RouteLocatorBuilder.Builder routes = routeLocatorBuilder.routes();
        routes.route("first",r->r.path("/guonei").uri("http://news.baidu.com/guonei")).build();
        return routes.build();
    }
    /**
     * 配置一个ID为 second 的路由规则
     * 当访问地址:http://localhost:9527/guoji 时会自动转发到地址 http://news.baidu.com/guoji
     */
    @Bean
    public RouteLocator CustomerRouteLocatorSecond(RouteLocatorBuilder routeLocatorBuilder){
        RouteLocatorBuilder.Builder routes = routeLocatorBuilder.routes();
        routes.route("second",r->r.path("/guoji").uri("http://news.baidu.com/guoji")).build();
        return routes.build();
    }
}

可以看到,用编码的方式 实现路由,由于地址是写死的,不能够进行更改,用起来非常的不方便。

所以,通过编码的方式实现路由,仅用作参考。

主流的,还是通过yml文件进行配置,一目了然,方便统一管理,而且还支持动态刷新。

推荐阅读