1. 序言

2. 搭建

2.1. gateway本体项目

2.1.1. pom

本项目的版本均基于SpringCloud Hoxton.SR9SpringCloudalibaba

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Hoxton.SR9</version>
<type>pom</type>
<scope>import</scope>
</dependency>

<!--************spring-cloud相关************-->
<!--整合spring cloud alibaba-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.2.6.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
1
2
3
4
5
6
7
8
9
10
11
12
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

<!--选用web或webflux-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>

2.1.2. 配置

启动类按照普通的springboot项目启动

配置文件

application.properties

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
server:
port: 8101

spring:
application:
name: CloudGateway
cloud:
nacos:
discovery:
server-addr: www.liukewen.cn:8848
namespace: spring-cloud-alibaba-center-id
# gateway的配置
gateway:
discovery:
locator:
enabled: false #关闭注册中心路由功能

#这属于应用配置,可以在程序里配
routes:
- id: nacos-provider
uri: lb://CloudGatewayProvider
predicates:
- Path=/cloud-provider/**

此时可以在nacos上看到注册信息

2.2. provider

简单搭建一个nacos项目

2.2.1. pom

1
2
3
4
5
6
7
8
9
10
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>

2.2.2. 配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
server:
port: 8111
servlet:
# 这里加了/cloud-provider和上文路由配置的 spring.gateway.routes.predicates[0].Path=/cloud-provider/** 一致,方便路径保持一致
context-path: /cloud-provider

spring:
application:
name: CloudGatewayProvider
cloud:
nacos:
discovery:
server-addr: www.liukewen.cn:8848
namespace: spring-cloud-alibaba-center-id

2.2.3. 服务

提供一个调用服务

1
2
3
4
5
6
7
8
9
10
11
@RestController
@RequestMapping("/providerController")
public class ProviderController {

@GetMapping("/hello")
public Object hello(){
return "Provider Hello";
}

}

同样可以加一个consumer

2.3. 使用

启动好服务后,可以在nacos中看到注册信息

nacos

用postman调用网关服务,返回provider的数据

postman