SpringCloud-Gateway
- 电脑硬件
- 2025-08-17 02:09:02

一、介绍
(1)网关服务 (2)功能:断言、路由、过滤 (3)能避免用户直接访问到业务主机
二、项目搭建a、编写pom.xml(注意移除web框架,gateway中自带有)
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http:// .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"> <parent> <artifactId>demo20220821</artifactId> <groupId>com.wsh.springcloud</groupId> <version>1.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>cloud-gateway-gateway9527</artifactId> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-gateway</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> <dependency> <groupId>com.wsh.springcloud</groupId> <artifactId>cloud-api-common</artifactId> <version>1.0-SNAPSHOT</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> </project>b、编写application.yml
server: port: 9527 spring: application: name: cloud-gateway-service eureka: client: # 客户端设置为true register-with-eureka: true # 客户端设置为true fetch-registry: true service-url: # defaultZone: http://localhost:7001/eureka defaultZone: http://eureka1 :7001/eureka, http://eureka2 :7002/eureka instance: instance-id: gateway9527 prefer-ip-address: truec、编写启动类
package com.wsh.springcloud; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.EnableEurekaClient; /** * @ClassName PaymentMain8002 * @Description: TODO * @Author wshaha * @Date 2022/8/23 * @Version V1.0 **/ @EnableEurekaClient @SpringBootApplication public class GatewayMain8002 { public static void main(String[] args) { SpringApplication.run(GatewayMain8002.class, args); } }d、application.yml增加路由配置
server: port: 9527 spring: application: name: cloud-gateway-service cloud: gateway: routes: - id: r1 uri: http://localhost:8001 predicates: - Path=/payment/test/** eureka: client: # 客户端设置为true register-with-eureka: true # 客户端设置为true fetch-registry: true service-url: # defaultZone: http://localhost:7001/eureka defaultZone: http://eureka1 :7001/eureka, http://eureka2 :7002/eureka instance: instance-id: gateway9527 prefer-ip-address: truee、运行 (4)路由开启支持负载均衡
server: port: 9527 spring: application: name: cloud-gateway-service cloud: gateway: discovery: locator: enabled: true #开启使用微服务名路由 routes: - id: r1 uri: lb://CLOUD-PAYMENT-SERVICE predicates: - Path=/payment/test/** eureka: client: # 客户端设置为true register-with-eureka: true # 客户端设置为true fetch-registry: true service-url: # defaultZone: http://localhost:7001/eureka defaultZone: http://eureka1 :7001/eureka, http://eureka2 :7002/eureka instance: instance-id: gateway9527 prefer-ip-address: true三、断言配置
四、过滤
(1) (2)自定义
package com.wsh.springcloud.config; import org.springframework.cloud.gateway.filter.GatewayFilterChain; import org.springframework.cloud.gateway.filter.GlobalFilter; import org.springframework.core.Ordered; import org.springframework.stereotype.Component; import org.springframework.util.MultiValueMap; import org.springframework.web.server.ServerWebExchange; import reactor.core.publisher.Mono; /** * @ClassName FiltersConfig * @Description: TODO * @Author wshaha * @Date 2023/10/14 * @Version V1.0 **/ @Component public class FiltersConfig implements GlobalFilter, Ordered { @Override public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) { MultiValueMap<String, String> queryParams = exchange.getRequest().getQueryParams(); queryParams.entrySet().stream() .forEach(item -> { System.out.println(item.getKey() + "-" + item.getValue()); }); return exchange.getResponse().setComplete();//结束 // return chain.filter(exchange); //进入下一个过滤器 } @Override public int getOrder() { return 0; } }
SpringCloud-Gateway由讯客互联电脑硬件栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“SpringCloud-Gateway”