前置
创建 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: 10005spring:application:name: sky-gatewaycloud:nacos:discovery:# 服务注册地址server-addr: 127.0.0.1:8848config:# 配置中心地址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的接口