Sprint Cloud gateway 作为一个业务网关,主要作用聚合内部微服务调用请求,实现前端vue或app对api请求统一调用,前身是zuul现为gateway
创建 Spring cloud gateway项目
gradle -v 查看gradle版本号
------------------------------------------------------------
Gradle 7.1.1
------------------------------------------------------------
Build time: 2021-07-02 12:16:43 UTC
Revision: 774525a055494e0ece39f522ac7ad17498ce032c
Kotlin: 1.4.31
Groovy: 3.0.7
Ant: Apache Ant(TM) version 1.10.9 compiled on September 27 2020
JVM: 11.0.7 (Oracle Corporation 11.0.7+8-LTS)
OS: Windows 10 10.0 amd64
出现上述表示安装成功
创建工程
F:\Tools\test>gradle init
Starting a Gradle Daemon, 1 incompatible and 1 stopped Daemons could not be reused, use --status for details
Select type of project to generate:
1: basic
2: application
3: library
4: Gradle plugin
Enter selection (default: basic) [1..4]
选择basic 默认就可以
生成后工程目录导入idea
可能需要手工创建一些目录
src/main/java
src/main/resources
src/test/java
src/test/resouces
修改build.gradle 内容如下
plugins {
id 'org.springframework.boot' version '2.5.3'
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id 'java'
}
group 'com.rainbow'
version '1.0-SNAPSHOT'
sourceCompatibility = '11'
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
repositories {
mavenCentral()
}
ext {
set('springCloudVersion', "2020.0.3")
}
dependencies {
implementation 'org.springframework.cloud:spring-cloud-starter-gateway'
implementation group: 'com.alibaba.cloud', name: 'spring-cloud-starter-alibaba-nacos-discovery', version: '2021.1'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
implementation group: 'org.springframework.cloud', name: 'spring-cloud-loadbalancer', version: '3.0.3'
}
dependencyManagement {
imports {
mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
}
}
Reload all 一下加载依赖包需要等待时间
编写启动类
@SpringBootApplication
@EnableDiscoveryClient
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
编写application.yml
server:
port: 8080
spring:
cloud:
nacos:
discovery:
server-addr: 10.0.0.192:8848
namespace: 5fa2f06b-1959-4b32-9060-81e49e54dfdd
group: dev
gateway:
routes:
- id: users
uri: lb://users
predicates:
- Path=/users/**
filters:
- StripPrefix=1
配置说明:
如果lb://users 生效必需要引用
implementation group: 'org.springframework.cloud', name: 'spring-cloud-loadbalancer', version: '3.0.3'
否则出现404 无任何提示
微服务users 代码示例
@RestController
@Slf4j
public class HelloController {
@GetMapping("/hello")
public String hello(){
log.info("hello");
return "Hello2222222";
}
}
启动项目测试:
GET http://127.0.0.1:8080/users/hello 返回如下所示:
调整配置文件 通过服务发现自动路由
server:
port: 8080
spring:
cloud:
nacos:
discovery:
server-addr: 10.0.0.192:8848
namespace: 5fa2f06b-1959-4b32-9060-81e49e54dfdd
group: dev
gateway:
discovery:
locator:
enabled: true
lower-case-service-id: true
根据服务自动发现根据默认调用原则 http://127.0.0.1:8080/{服务名}/{微服务路径}
http://127.0.0.1:8080/users/hello
nacos服务注册
下一篇介绍全局过滤器进行Token校验。