当前位置: 首页 > news >正文

SpringCloud Gateway入门

本文是介绍一下SpringCloud Gateway简单路由转发使用。

SpringCloud Gateway简介

SpringCloud是基于Spring Framework 5,Project Reactor和Spring Boot 2.0构建,目标是用于替代zuul。

官方文档

官方文档地址:cloud.spring.io/spring-clou…

在官方文档上是这样介绍Spring Cloud Gateway的:

该项目提供了一个用于在Spring MVC之上构建API网关的库。Spring Cloud Gateway旨在提供一种简单而有效的方式来路由到API,并为他们提供横切关注点。)

入门案例

接下来,介绍一下简单使用SpringCloud Gateway路由功能(本文使用SpringBoot2.0.0.RELEASE和SpringCloud Finchley.RC1版本)。

创建项目

新建一个项目,项目种加入SpringCloud Gateway依赖,完整pom如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.dalaoyang</groupId>
    <artifactId>springcloud_gateway</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>springcloud_gateway</name>
    <description>springcloud_gateway</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.0.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <spring-cloud.version>Finchley.RC1</spring-cloud.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>


</project>
复制代码

SpringBoot主程序

在类中配置路由

主程序中加入了一种配置路由的方法,利用@Bean的方式自定义RouteLocator。

package com.dalaoyang;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.gateway.route.RouteLocator;
import org.springframework.cloud.gateway.route.builder.RouteLocatorBuilder;
import org.springframework.context.annotation.Bean;


@SpringBootApplication
public class SpringcloudGatewayApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpringcloudGatewayApplication.class, args);
    }



    @Bean
    public RouteLocator customRouteLocator(RouteLocatorBuilder builder) {
        return builder.routes()
                .route(r -> r.path("/jianshu")
                        .uri("http://www.jianshu.com/u/128b6effde53")
                ).build();
    }

}
复制代码

在配置文件中配置:

server:
  port: 8888

spring:
  application:
    name: gateway-service
  cloud:
    gateway:
      routes:
      - id: dalaoyang
        uri: http://www.dalaoyang.cn/
        predicates:
          - Path=/dalaoyang/**
      - id: juejin
        uri: https://juejin.im/user/5aa50b96f265da23866f836e
        predicates:
          - Path=/juejin/**

复制代码

运行测试

到这里其实就配置完成了

访问http://localhost:8888/dalaoyang 自动跳转到了我的博客首页

访问http://localhost:8888/jianshu 自动跳转到了我的简书首页

访问http://localhost:8888/juejin 自动跳转到了我的掘金首页

源码下载:大老杨源码

相关文章:

  • 使用jQuery操作input的value值
  • tpl-angularjs Web端开发工程模板
  • [python] RRT快速拓展随机树
  • 《Python从菜鸟到高手》已经出版,开始连载了,购买送视频课程
  • Clojure基础课程2-Clojure中的数据长啥样?
  • Spring Boot【快速入门】
  • 使用时间器区别网页上的单击和双击
  • css设置全局变量和局部变量
  • 宏观政策转向,消费金融行业能否送别“至暗时刻”?
  • vc code
  • FLIP-24+-+SQL+Client
  • 【转】【WPF】WPF - MVVM - 如何将ComboBox的Selectchange事件binding到ViewModel
  • linux内核中链表代码分析---list.h头文件分析(二)【转】
  • 时间不对导致vSAN服务无法启动
  • C# WinForm 技巧十: winfrom 全屏自适应屏幕分辨率
  • 4月23日世界读书日 网络营销论坛推荐《正在爆发的营销革命》
  • canvas绘制圆角头像
  • CentOS 7 防火墙操作
  • CSS进阶篇--用CSS开启硬件加速来提高网站性能
  • Fundebug计费标准解释:事件数是如何定义的?
  • HTML-表单
  • java8 Stream Pipelines 浅析
  • Js基础知识(四) - js运行原理与机制
  • Laravel Telescope:优雅的应用调试工具
  • Meteor的表单提交:Form
  • Python代码面试必读 - Data Structures and Algorithms in Python
  • scrapy学习之路4(itemloder的使用)
  • 测试如何在敏捷团队中工作?
  • 工程优化暨babel升级小记
  • 理清楚Vue的结构
  • 使用 Node.js 的 nodemailer 模块发送邮件(支持 QQ、163 等、支持附件)
  • 推荐一款sublime text 3 支持JSX和es201x 代码格式化的插件
  • 小试R空间处理新库sf
  • 写给高年级小学生看的《Bash 指南》
  • 在GitHub多个账号上使用不同的SSH的配置方法
  • 【运维趟坑回忆录 开篇】初入初创, 一脸懵
  • ionic入门之数据绑定显示-1
  • Prometheus VS InfluxDB
  • (¥1011)-(一千零一拾一元整)输出
  • (pt可视化)利用torch的make_grid进行张量可视化
  • (二) Windows 下 Sublime Text 3 安装离线插件 Anaconda
  • (附源码)计算机毕业设计ssm高校《大学语文》课程作业在线管理系统
  • (更新)A股上市公司华证ESG评级得分稳健性校验ESG得分年均值中位数(2009-2023年.12)
  • (十)T检验-第一部分
  • (十八)SpringBoot之发送QQ邮件
  • (实战篇)如何缓存数据
  • (一)【Jmeter】JDK及Jmeter的安装部署及简单配置
  • (转)利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载 【反射】...
  • (转)树状数组
  • .describe() python_Python-Win32com-Excel
  • .mysql secret在哪_MySQL如何使用索引
  • .net 7 上传文件踩坑
  • .Net 代码性能 - (1)
  • .net 使用$.ajax实现从前台调用后台方法(包含静态方法和非静态方法调用)
  • .NET 中使用 Mutex 进行跨越进程边界的同步