最近动态

Java

Spring Cloud Kubernetes详解

Spring Cloud Kubernetes(SCK)是一种基于Spring Boot和Kubernetes的开发框架,它简化了在Kubernetes集群中部署、管理和扩展Spring应用程序的过程。本文将详细介绍Spring Cloud Kubernetes的核心概念、主要组件和使用方法。

核心概念

ConfigMap

ConfigMap是一种存储配置数据的对象,它可以使用键值对或者文件的形式存储。在Kubernetes集群中,ConfigMap可被用来存储应用程序的配置信息,例如数据库连接字符串、密钥等。

Secret

Secret是一种安全地存储敏感数据的对象,它会被加密并存储在Etcd中。在Kubernetes集群中,Secret可被用来存储与ConfigMap类似的配置数据,例如API密钥、证书等。

Service

Service是一种网络抽象,它定义了一组逻辑相近的Pod的访问方式。每个Service都有一个唯一的Cluster IP地址,可以通过该IP地址来访问Service所关联的Pod。

Ingress

Ingress是一种将外部流量路由到内部服务的机制,它充当了一种反向代理的角色。Ingress定义了流量的入口规则,可以根据不同的请求路径和HTTP头信息将请求路由到不同的Service上。

Pod

Pod是Kubernetes中最小的调度和管理单位,它是一个可以包含一个或多个容器的实例。每个Pod都有自己的IP地址,并且可以与其他Pod进行通信。

Deployment

Deployment是一种声明式方式定义Pod副本数和更新策略的对象。通过Deployment,我们可以指定应用程序运行所需的Pod数量,并且在应用程序版本更新时自动处理Pod的升级和回滚。

主要组件

Spring Cloud Kubernetes中主要包含了以下几个组件:

Spring Cloud Kubernetes Config

Spring Cloud Kubernetes Config是一个从Kubernetes ConfigMap和Secret中读取配置信息的库。当ConfigMap或Secret中的值发生变化时,Config会自动刷新应用程序的配置。

Spring Cloud Kubernetes Discovery

Spring Cloud Kubernetes Discovery是一个服务发现客户端,它能够自动发现在Kubernetes集群中注册的Service并将其注册到Spring Cloud的服务注册表中。

Spring Cloud Kubernetes Ribbon

Spring Cloud Kubernetes Ribbon是一个基于Spring Cloud LoadBalancer的负载均衡器,它可以将请求动态路由到不同的Service实例上。

Spring Cloud Kubernetes Gateway

Spring Cloud Kubernetes Gateway是一个基于Spring Cloud Gateway的反向代理网关,它可以将外部流量路由到内部的Service上。

Spring Cloud Kubernetes Sleuth

Spring Cloud Kubernetes Sleuth是一个分布式追踪工具,它能够为应用程序生成唯一的Trace ID,并对请求进行跟踪和记录。

使用方法

使用Spring Cloud Kubernetes需要完成以下步骤:

  1. 在Kubernetes集群中创建ConfigMap和Secret,存储应用程序的配置信息。
  2. 在Kubernetes集群中创建Deployment和Service,定义应用程序的副本数、镜像版本和网络规则。
  3. 编写Spring Boot应用程序,并添加Spring Cloud Kubernetes依赖。
  4. 在应用程序的配置文件中指定需要读取的ConfigMap和Secret的名称。
  5. 使用Spring Cloud Kubernetes Discovery、Ribbon和Gateway组件进行服务注册和路由。

例如,下面是一个使用Spring Cloud Kubernetes Config来读取ConfigMap和Secret的示例配置文件:

1
2
3
4
5
6
7
8
9
10
11
12
spring:
cloud:
kubernetes:
config:
name: myapp-config
namespace: default
sources:
- name: application.yml
type: YAML
secrets:
- name: myapp-secrets
mountPath: /secrets

在这个配置文件中,我们指定了要读取的ConfigMap

阅读剩下更多

默认配图
Java

Spring Cloud Vault详解

Spring Cloud Vault是一款基于Spring Cloud框架的密钥管理和安全性工具,它可以帮助开发人员在应用程序中轻松实现密钥管理、加密和解密操作。下面是Spring Cloud Vault的详细介绍。

  1. 简介
    Spring Cloud Vault可以与HashiCorp Vault集成,Vault是一个开源的密钥管理和安全性工具。当开发人员需要为他们的应用程序存储敏感信息时,如数据库密码,API密钥等,他们可以使用Spring Cloud Vault来读取这些信息并将其以加密方式存储在Vault中。Spring Cloud Vault还提供了各种安全功能,如自动续约和刷新令牌、访问控制和审计日志等,以确保对敏感数据的最高级别保护。

  2. 使用场景
    Spring Cloud Vault的主要使用场景包括:

  • 存储敏感信息:将敏感信息存储在Vault中,例如:数据库密码、加密密钥、API密钥、证书等;
  • 加密/解密操作:使用Vault中保存的密钥对敏感信息进行加密和解密操作;
  • 安全认证:使用Vault中存储的令牌对应用程序进行身份验证和授权;
  • 访问控制:使用Vault中的策略来限制对Vault中敏感信息的访问权限;
  1. Spring Cloud Vault的特性
  • 透明的加密/解密操作:Spring Cloud Vault可以自动将敏感信息加密和解密,客户端不需要了解Vault中存储的密钥是如何工作的;
  • 动态的令牌管理:Spring Cloud Vault支持Vault的动态令牌功能,在应用程序运行时生成和销毁令牌,以避免令牌滥用或泄漏;
  • 合理的安全性设置:Spring Cloud Vault提供配置选项,使开发人员可以控制密钥、令牌和策略等的安全性设置;
  • 统一的API接口:Spring Cloud Vault提供了统一的API接口,可与HashiCorp Vault进行交互,并与Spring Cloud Config等其他Spring Cloud组件集成。
  1. Spring Cloud Vault的集成
    Spring Cloud Vault可以与各种现有的Spring Cloud组件集成,例如:
  • Spring Cloud Config:通过Spring Cloud Vault,可以将敏感信息存储在Vault中,在Spring Cloud Config中使用引用来访问这些值;
  • Spring Cloud Eureka:Spring Cloud Vault可以与Eureka注册中心集成,以为服务实例提供加密和解密的能力;
  • Spring Cloud Netflix Zuul:通过Spring Cloud Vault,Zuul可以在路由之前执行解密操作,从而保护传输的敏感信息。

总结:
Spring Cloud Vault是一个用于密钥管理和安全性的工具,它可以轻松实现敏感信息的加密、解密、存储和访问控制。Spring Cloud Vault与HashiCorp Vault集成,提供透明的加密解密操作、动态令牌管理、合理的安全性设置以及统一的API接口。此外,它还可以与其他Spring Cloud组件集成,例如Spring Cloud Config、Eureka和Zuul等。

阅读剩下更多

默认配图
Java

Spring Cloud Task详解

Spring Cloud Task是一款基于Spring Boot的轻量级框架,用于构建和部署短暂的任务(Task)。这些任务通常涉及数据处理、ETL或其他批处理场景。本文将详细介绍Spring Cloud Task的主要特性、使用方式以及示例。

特性

以下是Spring Cloud Task的主要特性:

简单易用

Spring Cloud Task提供了简单易用的编程模型,可以让开发者快速创建和运行短暂的任务。

无状态

Spring Cloud Task是一种无状态的任务管理框架。这意味着它不会保留任何状态信息,并且可以在需要时重启任务。

可以组合多个任务

Spring Cloud Task支持将多个任务组合在一起。这使得开发者可以将多个任务视为一个整体进行操作。

与Spring Batch集成

Spring Cloud Task可以与Spring Batch集成,从而提供更加强大的批处理功能。

支持各种任务类型

Spring Cloud Task支持各种类型的任务,包括Java、Shell和Groovy等。

使用方式

以下是使用Spring Cloud Task的步骤:

步骤1:添加依赖

首先,需要在pom.xml文件中添加Spring Cloud Task依赖:

1
2
3
4
5
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-task</artifactId>
<version>2.2.6.RELEASE</version>
</dependency>

步骤2:创建任务

接下来,需要创建一个任务。可以使用Java、Shell或Groovy编写任务逻辑。例如,以下是一个简单的Java任务:

1
2
3
4
5
6
7
8
@Component
public class MyTask implements CommandLineRunner {

@Override
public void run(String... args) throws Exception {
//执行任务逻辑
}
}

步骤3:运行任务

Spring Cloud Task提供了一个命令行工具来运行任务。可以使用以下命令来运行任务:

1
java -jar my-task.jar --spring.cloud.task.name=myTaskName

其中,“my-task.jar”是打包后的任务文件名,“myTaskName”是任务名称。

步骤4:监控任务

Spring Cloud Task提供了一个Web界面来监控运行中的任务。可以在浏览器中访问以下URL来打开Web界面:

1
http://localhost:8080/actuator/tasks

示例

以下是一个使用Spring Cloud Task的示例,该示例演示如何使用Java来编写任务逻辑:

步骤1:添加依赖

首先,需要添加Spring Cloud Task依赖:

1
2
3
4
5
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-task</artifactId>
<version>2.2.6.RELEASE</version>
</dependency>

步骤2:创建任务

接下来,需要创建一个Java任务:

1
2
3
4
5
6
7
8
@Component
public class MyTask implements CommandLineRunner {

@Override
public void run(String... args) throws Exception {
System.out.println("Hello, world!");
}
}

步骤3:打包任务

接下来,需要使用Maven将任务打包成可执行的JAR文件:

1
mvn clean package

步骤4:运行任务

最后,可以使用以下命令来运行任务:

1
java -jar my-task.jar --spring.cloud.task.name=myTaskName

其中,“my-task.jar”是打包后的任务文件名,“myTaskName”是任务名称。

总结

Spring Cloud Task是一款轻量级框架,用于构建和部署短暂的任务。它提供了简单易用的编程模型,并且可以与Spring Batch集成。使用Spring Cloud Task,开发者可以快速创建和运行各种类型的任务

阅读剩下更多

默认配图
Java

Spring Cloud Contract详解

Spring Cloud Contract是一个用于测试微服务和RESTful API的开源框架。它允许您在消费者和提供者之间定义和验证API契约,以确保消费者与提供者的一致性和互操作性。

Spring Cloud Contract 的基本思想是将 API 契约视为双方的共同协议。相当于消费者和提供者共同编写的合同文件,它定义了API调用的请求和响应消息、请求参数、响应头等细节。借助Spring Cloud Contract,我们可以直接从这个合同中生成针对消费者端和提供者端的自动化测试用例。

具体来说,Spring Cloud Contract 可以分为以下两个部分:

  1. 契约定义
  2. 契约测试

在 Spring Cloud Contract 中,契约定义使用 Groovy 或 YAML 编写,并指定了 API 行为的各个方面。这个契约文件可以位于消费者及提供者的代码库中,在构建时通过插件进行生成。

契约测试则基于契约定义进行,其中消费者和提供者均使用相同的测试桩 (stub) 来模拟彼此的行为。这些测试用例会根据契约定义自动生成,并确保消费者和提供者能够相互配合正确地工作。

Spring Cloud Contract 提供了多种集成选项,包括支持 JUnit、MockMvc、REST Assured 和 WebTestClient 等测试工具。它还提供了一些附加功能,例如对契约的版本控制、自定义规则和选择性的生成等。

总的来说,Spring Cloud Contract 提供了一种简单而强大的方式来测试微服务和API之间的交互。借助契约定义和契约测试,您可以确保消费者和提供者之间的一致性,并轻松地进行持续集成和交付流程。

阅读剩下更多

默认配图
Java

Spring Cloud Security详解

Spring Cloud Security是一个基于Spring Cloud的安全框架,它提供了与Spring Cloud应用程序集成的简单方法来确保应用程序的安全性,并管理用户和服务之间的身份验证和授权。

Spring Cloud Security主要依赖于Spring Security, 它提供了一些特定于云环境的功能,例如OAuth2和JWT支持,以及各种云平台(如Cloud Foundry和Kubernetes)中使用的安全策略。

下面是Spring Cloud Security中的一些重要概念和功能:

  1. OAuth2支持:Spring Cloud Security提供了对OAuth2认证协议的支持,可以使用OAuth2协议控制授权访问。

  2. JWT支持:JSON Web Token (JWT) 是一种可扩展的、自描述的安全令牌,Spring Cloud Security提供了对JWT的原生支持,使得服务之间的认证和授权变得更加简单。

  3. 服务发现和注册:Spring Cloud Security可以与Spring Cloud Netflix Eureka或Spring Cloud Consul等注册中心进行集成,实现在分布式系统中的服务发现和注册,从而降低开发人员的工作量。

  4. 安全过滤器:Spring Cloud Security提供了一组安全过滤器,可以在处理输入请求和输出响应之前执行安全检查。这些安全过滤器包括身份验证、授权、跨站点请求伪造保护(CSRF Protection)和注入攻击防护。

  5. 集成Spring Boot Actuator:Spring Boot Actuator是一个监控和管理Spring Boot应用程序的框架。Spring Cloud Security可以与Spring Boot Actuator集成,提供各种安全相关的端点,例如/health和/info端点等。

  6. 安全策略:Spring Cloud Security提供了一些默认安全策略,包括基于角色的访问控制和基于IP地址的过滤器链。开发人员可以使用这些默认策略,也可以根据自己的需求自定义安全策略。

总之,Spring Cloud Security提供了一组丰富的功能来确保云环境下的应用程序的安全性,并简化了身份验证和授权的实现。它适用于需要构建分布式系统的企业开发人员,可以帮助他们快速构建可扩展、安全的分布式应用程序。

阅读剩下更多

默认配图
Java

Spring Cloud Bus详解

Spring Cloud Bus是Spring Cloud生态系统中的一个组件,它提供了一种通过消息代理将分布式应用程序连接在一起的方式。它使用分布式消息传递来实现配置更改和事件通知。

Spring Cloud Bus具有以下几个核心概念:

  1. 消息代理:Spring Cloud Bus使用消息代理来传递消息。支持的消息代理包括RabbitMQ、Kafka和Redis等。

  2. 消息总线:Spring Cloud Bus使用消息总线来建立分布式应用程序之间的通信。消息总线是一个单独的虚拟主题,它将所有的应用程序都连接在一起。

  3. 生产者和消费者:在Spring Cloud Bus中,每个应用程序都可以充当生产者或消费者。生产者可以发布事件,而消费者则可以订阅这些事件并执行相应操作。

  4. 事件:Spring Cloud Bus支持多种事件,包括配置更改事件和刷新事件。配置更改事件用于通知应用程序其配置已更改,而刷新事件用于指示应用程序重新加载其配置。

Spring Cloud Bus的核心功能包括:

  1. 集中化配置管理:Spring Cloud Bus可用于集中化配置管理。当应用程序的配置更改时,它会自动将更改广播到所有其他应用程序,并使它们重新加载其配置。

  2. 动态路由:Spring Cloud Bus可用于实现动态路由。它通过将事件发布到消息总线上来实现这一点,然后让消费者获取并处理这些事件。

  3. 集中化状态管理:Spring Cloud Bus可用于集中化状态管理。例如,在使用Netflix Eureka进行服务发现时,它可以将Eureka服务器上的状态广播到所有其他应用程序。

  4. 流量控制:Spring Cloud Bus可用于实现流量控制。当应用程序达到预定阈值时,它会自动发布事件以通知其他应用程序停止发送请求。

在使用Spring Cloud Bus时,需要注意以下几个问题:

  1. 需要选择合适的消息代理:Spring Cloud Bus支持多种消息代理,但不同的代理性能和可扩展性有所不同。因此,在选择代理时,需要根据具体需求进行评估。

  2. 需要正确配置消息总线:Spring Cloud Bus的消息总线是一个非常重要的组件。需要正确配置总线,并考虑到总线的可靠性和高可用性。

  3. 需要正确处理事件:Spring Cloud Bus支持多种事件。在使用这些事件时,需要正确处理它们,并确保它们能够被正确地传递和处理。

总之,Spring Cloud Bus是一个强大的分布式消息传递框架,可以帮助开发人员轻松地管理其分布式应用程序。它提供了许多功能,包括集中化配置管理、动态路由、集中化状态管理和流量控制等。使用Spring Cloud Bus需要注意消息代理、消息总线和事件处理等问题。

阅读剩下更多

默认配图
Java

Spring Cloud Stream详解

Spring Cloud Stream是一个构建基于消息模型的分布式系统的框架,它提供了一种简单的方式来构建、部署和管理基于消息驱动的微服务应用程序。本文将详细介绍Spring Cloud Stream的背景、核心概念、体系结构、使用方式和实现原理。

背景

在传统的分布式系统中,通常采用RESTful API来进行微服务之间的通信。但是这种方式存在以下问题:

  1. RESTful API缺少对复杂异步通信模型的支持。
  2. RESTful API的开发和维护成本高昂。
  3. RESTful API难以应对高并发和大量数据的场景。

为了解决这些问题,消息队列被引入到分布式系统中。消息队列具有以下优点:

  1. 支持异步通信。
  2. 具有高可用性和容错能力。
  3. 可以支持高吞吐量和低延迟的数据处理。

Spring Cloud Stream就是基于消息模型构建微服务应用程序的框架之一。

核心概念

Spring Cloud Stream的核心概念包括:

  1. Binder:Binder是连接消息系统和Spring Cloud Stream的桥梁。Spring Cloud Stream通过Binder将应用程序与消息系统连接起来。Spring Cloud Stream提供了多个Binder实现,例如Kafka、RabbitMQ、Kinesis等。
  2. Channel:Channel是消息在应用程序内部的传输通道。Spring Cloud Stream使用通道来处理输入和输出数据。
  3. Sink和Source:Sink表示接收消息的组件,Source表示发送消息的组件。它们都定义了一个或多个输出或输入通道。
  4. Processor:Processor除了具有Sink和Source的所有特性外,还可以同时拥有输入和输出通道。

体系结构

Spring Cloud Stream的体系结构如下图所示:

Spring Cloud Stream Architecture

  1. Producer:Producer将消息发送到消息队列中。
  2. Consumer:Consumer从消息队列中获取消息并进行处理。
  3. Binder:Binder将Producer和Consumer连接到消息队列中。
  4. Spring Cloud Stream Application:Spring Cloud Stream Application是基于Spring Boot的应用程序,它包含了Binder、Channel、Source和Sink。应用程序通过定义Source和Sink来指定消息的输入和输出。

使用方式

使用Spring Cloud Stream需要按照以下步骤进行:

  1. 添加依赖项:需要在pom.xml文件中添加Spring Cloud Stream的依赖项。
  2. 配置Binder:需要配置Binder以连接到消息队列中。例如,如果使用Kafka,则需要配置Kafka Binder。
  3. 定义Source和Sink:需要定义Source和Sink以指定应用程序的输入和输出。
  4. 编写处理逻辑:需要编写处理逻辑来处理输入和输出的数据。

实现原理

Spring Cloud Stream主要是通过Spring Integration框架来实现的,通过在Spring Integration中定义通道和消息处理器来实现消息的发送和接收。Spring Cloud Stream为Spring Integration提供了一些有用的扩展,例如为通道配置默认值、为通道添加拦截器等。

Spring Cloud Stream还提供了与Binder交互的接口,这些接口定义了与消息系统交互所需的基本功能,例如消息发送和接收、分区、序列化和反序列化等。

Spring Cloud Stream的数据模型是基于Spring Message的,它包含了消息头和消息体两部分。消息头包含了一些元数据信息,例如消息ID、时间戳、消息类型等。消息体则包含了实际的数据内容。

总之,Spring Cloud Stream是一个强大的框架,可以帮助开发人员构建基于消息模型的微服务应用程序。它简化

阅读剩下更多

默认配图
Java

Spring Cloud Sleuth详解

Spring Cloud Sleuth是一个分布式跟踪解决方案,它可以帮助开发者在分布式系统中追踪请求的传递过程。在分布式系统中,一次请求可能会经过多个微服务,如果不进行跟踪的话,难以定位和解决问题。

Spring Cloud Sleuth提供了一个统一的跟踪模型,该模型基于Google Dapper论文中的概念。在该模型中,每个请求都有一个唯一的Trace ID和Span ID,用于标识该请求及其子请求在分布式系统中的传递路径。Trace ID由全局唯一的64位ID表示,而Span ID则由本地唯一的64位ID表示。

Spring Cloud Sleuth支持多种跟踪实现,包括Zipkin、Jaeger和AWS X-Ray等。其中,Zipkin是最为广泛使用的跟踪工具之一,它可以提供非常详细的跟踪信息,包括请求的调用时间、耗时、请求头、响应头等信息。

在Spring Cloud Sleuth中,我们可以通过添加@EnableSleuth注解来启用跟踪功能。当启用了跟踪功能后,Spring Cloud Sleuth会自动将Trace ID和Span ID添加到请求的Header中,并在服务之间传递这些信息。开发者只需要在业务代码中添加log语句即可打印出相应的跟踪信息。

Spring Cloud Sleuth还提供了一些默认的Span和Trace名称生成策略,开发者可以根据自己的需要进行配置。例如,可以通过配置spring.sleuth.span-name-pattern属性来指定Span名称的生成规则,也可以通过配置spring.sleuth.trace-id-128属性来启用128位Trace ID。

总之,Spring Cloud Sleuth是一个非常实用的分布式跟踪工具,它可以帮助我们追踪请求在分布式系统中的传递路径,定位问题并解决问题。

阅读剩下更多

默认配图
Java

Spring Cloud Gateway详解

Spring Cloud Gateway是一个基于Spring Framework 5的反向代理和路由器,它提供了一种统一的方式来路由到不同的后端服务。它可以在微服务架构中使用,作为API网关来处理所有的请求。

Spring Cloud Gateway有以下几个主要特性:

  1. 基于断言(Predicates)的路由匹配:Spring Cloud Gateway 通过配置一系列的条件断言来匹配不同的请求,并将它们路由到不同的目标地址。

  2. 支持过滤器(Filters):Spring Cloud Gateway 可以通过添加过滤器来增强请求和响应流程,包括动态修改HTTP请求和响应、日志记录、安全验证等。

  3. 可扩展性:Spring Cloud Gateway 的设计允许开发人员对其进行扩展,从而满足各种不同的需求。

  4. 集成 Spring Cloud DiscoveryClient:Spring Cloud Gateway 可以与任何 Spring Cloud Discovery 客户端集成,如 Eureka、Consul、Zookeeper 等。

下面我们将详细介绍 Spring Cloud Gateway 的三个主要组件:路由(Route)、断言(Predicate)和过滤器(Filter)。

路由(Route)

路由是 Spring Cloud Gateway 的核心组件之一,它定义了将请求转发到哪个目标地址的规则。一个路由规则由以下属性组成:

  • ID:这是一个唯一标识符,用于识别该路由规则。
  • 目标地址:这是请求需要转发到的目标地址,可以是一个 URL 或者服务名。
  • 断言集合:这是一组条件断言,用于匹配请求是否符合该路由规则。
  • 过滤器集合:这是一组过滤器,用于增强请求和响应流程。

示例代码:

1
2
3
4
5
6
7
8
9
10
11
@Bean
public RouteLocator customRouteLocator(RouteLocatorBuilder builder) {
return builder.routes()
.route(r -> r.path("/foo/**")
.filters(f -> f.stripPrefix(1))
.uri("lb://service-foo"))
.route(r -> r.host("*.hystrix.com")
.filters(f -> f.hystrix(config -> config.setFallbackUri("forward:/fallback")))
.uri("http://httpbin.org:80"))
.build();
}

断言(Predicate)

Spring Cloud Gateway 的路由规则是通过一组条件断言来匹配请求的。断言是一些逻辑条件,它们根据请求中的一些属性进行比较,如路径、查询参数、HTTP头等。如果所有断言都返回 true,则该路由规则会被匹配到,请求将被路由到指定的目标地址。

Spring Cloud Gateway 提供了一系列预定义的断言,例如 Path、Host、Method、Header 等,开发人员也可以编写自己的断言。

示例代码:

1
2
3
4
5
6
7
8
9
10
11
@Bean
public RouteLocator customRouteLocator(RouteLocatorBuilder builder) {
return builder.routes()
.route(r -> r.path("/foo/**")
.filters(f -> f.stripPrefix(1))
.uri("lb://service-foo"))
.route(r -> r.host("*.hystrix.com")
.filters(f -> f.hystrix(config -> config.setFallbackUri("forward:/fallback")))
.uri("http://httpbin.org:80"))
.build();
}

过滤器(Filter)

Spring Cloud Gateway 的过滤器是一些功能模块,它们可以对请求和响应做一些增强处理,如动态修改HTTP请求和响应、日志记录、安全验证等。Spring Cloud Gateway 已经提供了一些预定义的过滤器,例如 Hystrix、RewritePath、AddRequestHeader 等,开发人员也可以编写自己的过滤器。

示例代码:

@Bean
public RouteLocator customRouteLocator(RouteLocatorBuilder builder) {
    return builder.routes()
        .route(r -> r.path("/

阅读剩下更多

默认配图
返回顶部