首页 > 其他分享 >【第12章】Spring Cloud之集成 Spring Cloud Gateway

【第12章】Spring Cloud之集成 Spring Cloud Gateway

时间:2024-07-28 14:25:51浏览次数:18  
标签:12 Spring springframework cloud provider org import hello Cloud

文章目录


前言

Spring Cloud Gateway是一个基于Spring Framework 5、Spring Boot 2和Project Reactor等技术构建的API网关服务器,旨在为微服务架构提供简单且有效的路由管理方式和一系列网关功能。
在这里插入图片描述


一、新建项目

1. 项目结构

在这里插入图片描述

2. 引入依赖

nacos相关配置我定义在了父工程中,前面也有过介绍,这里不再赘述

<dependency>
   <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>

网关不能包含spring-boot-starter-web模块

3. 启动类

package org.example.gateway;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

/**
 * Create by zjg on 2024/7/21
 */
@EnableDiscoveryClient
@SpringBootApplication
public class GatewayApplication {
    public static void main(String[] args) {
        SpringApplication.run(GatewayApplication.class, args);
    }
}

4. 基本配置

server:
  port: 8888
spring:
  application:
    name: gateway-service
  cloud:
    nacos:
      config:
        file-extension: yaml
        server-addr: ${NACOS_SERVER_ADDR}
        namespace: ${NACOS_NAMESPACE}
        username: ${NACOS_USERNAME}
        password: ${NACOS_PASSWORD}
        shared-configs[0]:
            data-id: base-discovery.yaml
            group: DEFAULT_GROUP
            refresh: true

二、新建配置

我们通过网关来为提供者和消费者配置路由规则信息

在这里插入图片描述

spring:
  cloud:
    gateway:
      routes[0]:
        id: provider-service
        uri: lb://provider-service
        predicates[0]:
          name: Path
          args[pattern]: /provider/**
      routes[1]:
        id: consumer-service
        uri: lb://consumer-service
        predicates[0]:
          name: Path
          args[pattern]: /consumer/**

三、新建服务

这里我们需要在提供者和消费者提供一个新的服务供测试使用

1. 提供者

package org.example.nacos.provider.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * Create by zjg on 2024/7/21
 */
@RestController
@RequestMapping("/provider/")
public class HelloController {
    @RequestMapping("hello")
    public String hello(){
        return "hello provider";
    }
}

2. 消费者

package org.example.nacos.consumer.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * Create by zjg on 2024/7/21
 */
@RestController
@RequestMapping("/consumer/")
public class HelloController {
    @RequestMapping("hello")
    public String hello(){
        return "hello consumer";
    }
}

接着我们再启动提供者和消费者服务。

四、单元测试

1. 启动网关服务

这里我们启动GatewayApplication服务

在这里插入图片描述

2. 提供者

localhost:8888/provider/hello
在这里插入图片描述

3. 消费者

localhost:8888/consumer/hello
在这里插入图片描述


总结

回到顶部

通过整合Spring Cloud Gateway统一后端服务的入口,在网关层进行统一的安全认证,降低微服务系统的复杂性。

标签:12,Spring,springframework,cloud,provider,org,import,hello,Cloud
From: https://blog.csdn.net/qq_44824164/article/details/140587101

相关文章

  • 简易版:在 SpringBoot 中设计一个订单号生成系统
     ​博客主页:   南来_北往系列专栏:SpringBoot实战引言要在SpringBoot中设计一个订单号生成系统,你可以按照以下步骤进行:创建一个SpringBoot项目,添加必要的依赖,如spring-boot-starter-web。创建一个订单号生成器类,实现订单号的生成逻辑。可以使用时间戳、随机数......
  • 微信小程序图书馆座位预约管理系统(SpringBoot后端+Vue管理端)附项目源码与配套文档
    目的和意义微信小程序图书馆座位预约管理系统可以对微信小程序图书馆座位预约管理系统信息进行集中管理,可以真正避免传统管理的缺陷。微信小程序图书馆座位预约管理系统是一款运用软件开发技术设计实现的应用系统,在信息处理上可以达到快速的目的,不管是针对数据添加,数据维护和......
  • SpringBoot+Vue电影院售票系统 - 附源码与配套文档
    1.1 研究背景随着互联网技术的迅速发展和普及,人们的生活方式发生了深刻变革,对于文化娱乐消费的需求日益增长,而作为文化消费重要组成部分的电影行业也迎来了前所未有的发展机遇。然而,传统的电影院售票模式,如现场购票、电话预定等,已难以满足现代消费者对便捷性、灵活性和个性......
  • CCF-CSP 201412-1 门禁系统
    一、问题描述问题描述涛涛最近要负责图书馆的管理工作,需要记录下每天读者的到访情况。每位读者有一个编号,每条记录用读者的编号来表示。给出读者的来访记录,请问每一条记录中的读者是第几次出现。输入格式输入的第一行包含一个整数n,表示涛涛的记录条数。第二行......
  • SpringMVC入门案例
    使用Servlet技术开发web程序流程1.创建web工程(Maven结构)2.设置tomcat服务器,加载web工程(tomcat插件)3.导入坐标(Servlet)4.定义处理请求的功能类(UserServlet)5.设置请求映射(配置映射关系)使用SpringMVc技术开发web程序流程1.创建web工程(Maven结构)2.设置tomcat......
  • Day12 本周心得体会
    目录概述哈希表重要题目及思路字符串重要题目及思路栈和队列重要题目及思路概述本周学习了哈希表,字符串以及栈和队列。相对于上周难度有所提升,下面对每个章节进行描述。哈希表上周的数组和链表,大多数题目是模拟和对于解决问题的算法的直接思考。对于哈希表,考察的往往是何时利......
  • 毕业设计:基于Springboot的在线小说阅读平台【代码+论文+PPT】
    全文内容包括:1、采用技术;2、系统功能;3、系统截图;4、配套内容。索取方式见文末微信号,欢迎关注收藏!一、采用技术语言:Java1.8框架:SpringBoot数据库:MySQL5.7、8.0开发工具:IntelliJIDEA旗舰版其他:Maven3.8以上二、系统功能会员管理:负责用户注册、登录、会员等级划分及用户信......
  • 【免费领源码】Java/Mysql数据库+springboot驾校预约管理系统 25540,计算机毕业设计项
    摘 要随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势;对于驾校预约管理系统当然也不能排除在外,随着网络技术的不断成熟,带动了驾校预约管理系统,它彻底改变了过去传统的管理方式,不仅使服务管理难度变低了,还提升了管理的灵活性。这种......
  • 如何在Python 3.12+中正确使用泛型来提高代码质量?
    我正在尝试使用泛型来改进FastAPI应用程序中的类型注释。我有一个抽象存储库类,在其中使用泛型:fromabcimportABC,abstractmethodfromtypingimportListclassAbstractRepository[T](ABC):@abstractmethodasyncdefadd_one(self,data:dict)->T:......
  • 微服务集成springsecurity实现认证
    module:auth1.添加依赖:spring-cloud-starter-security与spring-cloud-starter-oauth22.配置WebSecurityConfig:注入AuthenticationManager覆写configure3.配置tokenConfig4.授权服务器配置:AuthorizationServerextendsAuthorizationServerConfigurerAdapter配置客户端详细任务,......