【第12章】Spring Cloud之集成 Spring Cloud Gateway
前言
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. 提供者
3. 消费者
总结
通过整合Spring Cloud Gateway统一后端服务的入口,在网关层进行统一的安全认证,降低微服务系统的复杂性。
原文地址:https://blog.csdn.net/qq_44824164/article/details/140587101
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!