Spring cloud gateway整合nacos示例
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 est>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服务注册
