马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
好的,下面是优化后的版本。为了进步可读性和规范性,我对内容举行告终构化、简化了部分代码,同时增长相识释阐明,便于明白。
<hr> 1. 引入依赖
在 pom.xml 中添加以下依赖:
- <dependencies>
- <!-- Spring Cloud Gateway:提供API网关功能 -->
- <dependency>
- <groupId>org.springframework.cloud</groupId>
- <artifactId>spring-cloud-starter-gateway</artifactId>
- </dependency>
- <!-- Spring Cloud Alibaba Nacos Discovery:用于服务发现 -->
- <dependency>
- <groupId>com.alibaba.cloud</groupId>
- <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
- </dependency>
- <!-- Spring Cloud Loadbalancer:提供客户端负载均衡 -->
- <dependency>
- <groupId>org.springframework.cloud</groupId>
- <artifactId>spring-cloud-starter-loadbalancer</artifactId>
- </dependency>
- </dependencies>
复制代码 2. 启动类 (GateApplication.java)
界说主启动类,启动 Spring Boot 应用:
- @SpringBootApplication // 标明这是Spring Boot应用的入口
- public class GateApplication {
-
-
- public static void main(String[] args) {
-
-
- SpringApplication.run(GateApplication.class, args); // 启动应用
- }
- }
复制代码 3. 设置文件 (application.yml)
设置网关的根本设置、Nacos 服务发现以及路由规则。
- server:
- port: 8080 # 配置网关监听的端口
- spring:
- application:
- name: gateway # 应用名称,用于 Nacos 等服务发现
- cloud:
- nacos:
- discovery:
- server-addr: xiaotianlong.xyz:8848 # 配置 Nacos 服务器地址
- gateway:
- routes: # 配置网关的路由规则
- # 路由规则 1
- - id: service_name # 路由的唯一ID
- uri: lb://service_name # 使用负载均衡访问注册到 Nacos 中的服务
- predicates:
- - Path=/user/** # 请求路径以 `/user/` 开头时触发此路由
- filters:
- - AddRequestHeader=X-Request-Foo, Bar # 添加请求头
- # 路由规则 2
- - id: service_name2
- uri: lb://service_name2
- predicates:
- - Path=/order/** # 请求路径以 `/order/` 开头时触发此路由
复制代码 4. 自界说全局过滤器
界说一个全局过滤器,记载哀求的时间并打印日记。
- @Component // 声明为Spring组件
- public class MyGlobalFilter implements GlobalFilter, Ordered {
-
-
- @Override
- public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
-
-
- // 记录请求开始时间
- System.out.println("请求开始时间: " + System.currentTimeMillis());
-
- // 放行请求
- return chain.filter(exchange)
- .then(Mono.fromRunnable(() -> {
-
-
- // 记录请求结束时间
- System.out.println("请求结束时间: " + System.currentTimeMillis());
- }));
- }
- @Override
- public int getOrder() {
-
-
- // 过滤器的执行顺序,数字越小优先级越高
-
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!qidao123.com:ToB企服之家,中国第一个企服评测及软件市场,开放入驻,技术点评得现金 |