前置
创建 Spring Cloud项目
参考:创建Spring Cloud Maven工程-CSDN博客
1. 创建一个maven jar类型项目
在idea中右键父工程-》New-》Module
创建一个maven工程
2. 引入相关依赖
在POM文件中引入下面的依赖
<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>
<parent>
<groupId>org.szc</groupId>
<artifactId>spring_cloud_demo</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>gateway</artifactId>
<packaging>jar</packaging>
<dependencies>
<!--springcloud 依赖-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>${spring-boot.version}</version>
</plugin>
</plugins>
</build>
</project>
3. 创建配置文件
在resources下创建bootstrap.yml配置文件
server:
port: 10005
spring:
application:
name: sky-gateway
cloud:
nacos:
discovery:
# 服务注册地址
server-addr: 127.0.0.1:8848
config:
# 配置中心地址
server-addr: ${spring.cloud.nacos.discovery.server-addr}
# 配置中心的文件格式
file-extension: yml
注意引入了nacos依赖后,在启动时会自动往从nacos服务器拉取下面3个配置文件,可以在启动日志看到
配置文件名称和服务名以及文件后缀是有关系的,默认是
服务名
服务名+后缀
服务名-激活的配置+后缀
在nacos上新建 sky-gateway.yml文件,如下图所示
文件内容为
spring:
cloud:
gateway:
discovery:
locator:
lowerCaseServiceId: true #服务名转小写
#enabled: true #开启自动路由发现
routes:
- id: sky-system #id 唯一即可
uri: lb://sky-system #lb://服务名,表示请求会负载均衡到sky-system服务
predicates:
- Path=/system/** # 表示访问/system开头的api会转发到sky-system服务
- id: sky-product #id唯一即可
uri: lb://sky-product # lb://服务名
predicates:
- Path=/product/** #表示访问/product开头的api会转发到sky-product服务
说明
下面的一段内容表示访问/system开头的api会转发到sky-system服务
uri: lb://sky-system #lb://服务名,表示请求会负载均衡到sky-system服务
predicates:
- Path=/system/**
重启gateway
4. 测试
访问:http://localhost:10005/system/getUserBuy?userId=19 即可访问到sky-system的接口