package com.fm.gateway.demo;
import org.springframework.cloud.gateway.route.RouteLocator;
import org.springframework.cloud.gateway.route.builder.RouteLocatorBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* @author 未来码匠
*/
@Configuration
public class GatewayConfig {
/**
* RouteLocator是Spring Cloud Gateway中用于定义路由规则的接口。
* RouteLocatorBuilder是一个用于构建路由规则的构造器类。它是通过依赖注入的方式传递给此方法作为参数。
*/
@Bean
public RouteLocator myRoutes(RouteLocatorBuilder builder) {
// 使用builder对象创建路由规则。
// 使用builder.routes()来获取一个RouteLocatorBuilder.Builder对象,它用于定义路由规则。
// 使用链式调用的方式来配置具体的路由规则。
return builder.routes()
.route(p -> p
// 指定匹配的请求路径为"/get"
.path("/get")
// 通过调用filters()方法,我们可以添加过滤器。
// 过滤器是用于对请求进行预处理或后处理的组件,可以实现一些常见的功能,如添加请求头、鉴权、限流等。
// addRequestHeader方法即添加一个带有键值的请求头。
.filters(f -> f.addRequestHeader("FmVersion", "0.0.1")
.addRequestHeader("FmProjectName", "gateway-demo")
.addRequestHeader("FmProjectAuthor", "Future Coder")
)
// 指定转发目标的URI,这意味着当路由规则匹配成功时,网关会根据路由规则进行转发,并将请求转发到指定的URI。
.uri("http://httpbin.org"))
.route(p -> p
.host("*.circuitbreaker.com")
// 添加了一个断路器过滤器,使用circuitBreaker()方法配置了断路器的名称为"mycmd"。
.filters(f -> f.circuitBreaker(config -> config.setName("mycmd")))
.uri("http://httpbin.org"))
// 通过调用build()方法,将定义的路由规则构建为一个RouteLocator对象,并将其返回作为Spring Bean。
.build();
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
本文介绍了如何使用Spring Cloud Gateway构建一个简单的微服务网关。我们将讨论网关的基本概念和功能,并提供一个简单示例来演示如何配置和使用Spring Cloud Gateway。 本文适用于具有一定Spring框架和微服务基础知识的开发人员和架构师。读者应该对微服务架构、路由、过滤和负载均衡等概念有基本的了解。 Spring Cloud Gateway适用于构建和管理大规模微服务架构中的网关服务。它可以用于以下场景: 1.路由管理:将外部请求路由到不同的微服务实例,根据请求路径、主机名等条件进行路由转发。 2.过滤和增强功能:通过过滤器添加、修改或删除请求/响应的头信息、参数、主体内容等。 3.负载均衡:根据负载均衡策略将请求分发到不同的微服务实例,提高系统的吞吐量和可扩展性。 4.安全性和认证:通过集成认证和授权服务,实现对请求的安全验证和访问控制。 5.监控和统计:收集网关请求的指标数据,用于监控、分析和故障排除。
资源推荐
资源详情
资源评论
收起资源包目录
如何使用Spring Cloud Gateway构建一个简单的微服务网关(2) (142个子文件)
GatewayConfig.class 4KB
GatewayDemoApplication.class 760B
GatewayDemoApplicationTests.class 558B
mvnw.cmd 7KB
.gitignore 395B
.gitignore 176B
gateway-demo1.iml 14KB
maven-wrapper.jar 61KB
GatewayConfig.java 2KB
GatewayDemoApplication.java 366B
GatewayDemoApplicationTests.java 225B
HELP.md 1KB
mvnw 11KB
maven-wrapper.properties 233B
application.properties 1B
application.properties 1B
workspace.xml 5KB
pom.xml 3KB
Maven__org_springframework_cloud_spring_cloud_starter_circuitbreaker_reactor_resilience4j_3_0_2.xml 887B
compiler.xml 872B
jarRepositories.xml 845B
Maven__org_springframework_cloud_spring_cloud_circuitbreaker_resilience4j_3_0_2.xml 775B
Maven__com_fasterxml_jackson_module_jackson_module_parameter_names_2_15_0.xml 724B
Maven__org_springframework_boot_spring_boot_starter_reactor_netty_3_1_0.xml 722B
Maven__io_netty_netty_resolver_dns_native_macos_osx_x86_64_4_1_92_Final.xml 715B
Maven__io_netty_netty_transport_native_unix_common_4_1_92_Final.xml 714B
Maven__org_springframework_security_spring_security_rsa_1_0_11_RELEASE.xml 703B
Maven__org_springframework_boot_spring_boot_test_autoconfigure_3_1_0.xml 701B
Maven__org_springframework_boot_spring_boot_starter_validation_3_1_0.xml 701B
Maven__io_netty_netty_resolver_dns_classes_macos_4_1_92_Final.xml 700B
Maven__io_netty_netty_transport_native_epoll_linux_x86_64_4_1_92_Final.xml 698B
Maven__org_springframework_cloud_spring_cloud_starter_gateway_4_0_6.xml 691B
Maven__com_vaadin_external_google_android_json_0_0_20131108_vaadin1.xml 688B
Maven__io_github_resilience4j_resilience4j_framework_common_2_0_2.xml 686B
Maven__org_springframework_cloud_spring_cloud_gateway_server_4_0_6.xml 684B
Maven__com_fasterxml_jackson_datatype_jackson_datatype_jsr310_2_15_0.xml 683B
Maven__org_springframework_boot_spring_boot_starter_logging_3_1_0.xml 680B
Maven__org_springframework_boot_spring_boot_starter_webflux_3_1_0.xml 680B
Maven__io_netty_netty_transport_classes_epoll_4_1_92_Final.xml 679B
Maven__io_github_resilience4j_resilience4j_circuitbreaker_2_0_2.xml 672B
Maven__io_github_resilience4j_resilience4j_circularbuffer_2_0_2.xml 672B
Maven__com_fasterxml_jackson_datatype_jackson_datatype_jdk8_2_15_0.xml 669B
Maven__org_springframework_boot_spring_boot_autoconfigure_3_1_0.xml 666B
Maven__org_hibernate_validator_hibernate_validator_8_0_0_Final.xml 662B
Maven__org_springframework_security_spring_security_crypto_6_1_0.xml 661B
Maven__org_springframework_boot_spring_boot_starter_json_3_1_0.xml 659B
Maven__org_springframework_boot_spring_boot_starter_test_3_1_0.xml 659B
Maven__io_github_resilience4j_resilience4j_spring_boot3_2_0_2.xml 658B
Maven__io_github_resilience4j_resilience4j_annotations_2_0_2.xml 651B
Maven__io_github_resilience4j_resilience4j_timelimiter_2_0_2.xml 651B
Maven__io_github_resilience4j_resilience4j_ratelimiter_2_0_2.xml 651B
Maven__io_github_resilience4j_resilience4j_micrometer_2_0_2.xml 644B
Maven__com_fasterxml_jackson_core_jackson_annotations_2_15_0.xml 639B
Maven__org_springframework_cloud_spring_cloud_starter_4_0_3.xml 635B
Maven__org_springframework_cloud_spring_cloud_commons_4_0_3.xml 635B
Maven__org_springframework_cloud_spring_cloud_context_4_0_3.xml 635B
Maven__io_github_resilience4j_resilience4j_consumer_2_0_2.xml 630B
Maven__io_github_resilience4j_resilience4j_bulkhead_2_0_2.xml 630B
Maven__org_springframework_boot_spring_boot_starter_3_1_0.xml 624B
Maven__io_github_resilience4j_resilience4j_reactor_2_0_2.xml 623B
Maven__io_github_resilience4j_resilience4j_spring6_2_0_2.xml 623B
Maven__jakarta_annotation_jakarta_annotation_api_2_1_1.xml 621B
Maven__jakarta_activation_jakarta_activation_api_2_1_2.xml 621B
Maven__org_junit_platform_junit_platform_commons_1_9_3.xml 621B
Maven__jakarta_validation_jakarta_validation_api_3_0_2.xml 621B
Maven__com_fasterxml_jackson_core_jackson_databind_2_15_0.xml 618B
Maven__org_junit_platform_junit_platform_engine_1_9_3.xml 614B
Maven__io_projectreactor_netty_reactor_netty_http_1_1_7.xml 613B
Maven__io_projectreactor_netty_reactor_netty_core_1_1_7.xml 613B
Maven__io_github_resilience4j_resilience4j_retry_2_0_2.xml 609B
Maven__io_netty_netty_handler_proxy_4_1_92_Final.xml 609B
Maven__io_micrometer_micrometer_observation_1_11_0.xml 608B
Maven__org_junit_jupiter_junit_jupiter_params_5_9_3.xml 603B
Maven__org_junit_jupiter_junit_jupiter_engine_5_9_3.xml 603B
Maven__org_springframework_boot_spring_boot_test_3_1_0.xml 603B
Maven__io_netty_netty_resolver_dns_4_1_92_Final.xml 602B
Maven__io_github_resilience4j_resilience4j_core_2_0_2.xml 602B
Maven__org_apache_tomcat_embed_tomcat_embed_el_10_1_8.xml 599B
Maven__jakarta_xml_bind_jakarta_xml_bind_api_4_0_0.xml 599B
Maven__org_apache_logging_log4j_log4j_to_slf4j_2_20_0.xml 596B
Maven__org_jboss_logging_jboss_logging_3_5_0_Final.xml 596B
Maven__io_netty_netty_codec_socks_4_1_92_Final.xml 595B
Maven__io_netty_netty_codec_http2_4_1_92_Final.xml 595B
Maven__com_fasterxml_jackson_core_jackson_core_2_15_0.xml 590B
Maven__org_springframework_spring_expression_6_0_9.xml 590B
Maven__io_netty_netty_codec_http_4_1_92_Final.xml 588B
Maven__org_mockito_mockito_junit_jupiter_4_8_1.xml 586B
Maven__org_reactivestreams_reactive_streams_1_0_4.xml 583B
Maven__org_junit_jupiter_junit_jupiter_api_5_9_3.xml 582B
Maven__io_projectreactor_addons_reactor_extra_3_5_1.xml 582B
Maven__io_netty_netty_transport_4_1_92_Final.xml 581B
Maven__io_netty_netty_codec_dns_4_1_92_Final.xml 581B
Maven__io_micrometer_micrometer_commons_1_11_0.xml 580B
Maven__io_netty_netty_resolver_4_1_92_Final.xml 574B
Maven__org_springframework_spring_context_6_0_9.xml 569B
Maven__org_springframework_spring_webflux_6_0_9.xml 569B
Maven__org_springframework_boot_spring_boot_3_1_0.xml 568B
Maven__io_netty_netty_handler_4_1_92_Final.xml 567B
Maven__net_bytebuddy_byte_buddy_agent_1_14_4.xml 566B
Maven__org_apache_logging_log4j_log4j_api_2_20_0.xml 561B
共 142 条
- 1
- 2
资源评论
星际编程喵
- 粉丝: 4378
- 资源: 96
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功